Commit Graph

2404 Commits

Author SHA1 Message Date
Lioncash
ed453aa52d thumb32: Implement USAD8 2021-02-07 09:57:34 +00:00
Lioncash
b07fab604f thumb32: Implement MLS 2021-02-07 09:57:34 +00:00
Lioncash
cf5058bccb thumb32: Implement MLA 2021-02-07 09:57:34 +00:00
Lioncash
153d87c843 thumb32: Implement MUL 2021-02-07 09:57:34 +00:00
MerryMage
8b612edb75 translate_thumb: Fix bug in TranslateSingleThumbInstruction 2021-02-06 21:26:44 +00:00
MerryMage
aa89418e8b bit_util: Add SwapHalves32 2021-02-06 21:26:44 +00:00
MerryMage
fa1b9545fd bit_util: Rename Swap{16,32,64} to SwapBytes{16,32,64} 2021-02-06 21:26:44 +00:00
MerryMage
39644d69ee A32/decode: Split thumb32 2021-02-06 21:26:42 +00:00
MerryMage
6d0a049fb2 A32/decode: Split thumb16 2021-02-06 21:25:24 +00:00
MerryMage
ac9e1ccb1c A32/thumb16: Fix bug in CBZ/CBNZ 2021-02-06 21:25:24 +00:00
Lioncash
23619c8c6a thumb32: Implement SHSUB8/UHSUB8 2021-02-01 17:50:46 -05:00
Lioncash
9d2570470e thumb32: Implement SHADD8/UHADD8 2021-02-01 17:50:46 -05:00
Lioncash
afad76078d thumb32: Implement SHSUB16/UHSUB16 2021-02-01 17:50:46 -05:00
Lioncash
51b7c32d02 thumb32: Implement SHSAX/UHSAX 2021-02-01 17:50:46 -05:00
Lioncash
f0a219fcd0 thumb32: Implement SHASX/UHASX 2021-02-01 17:50:46 -05:00
Lioncash
94f8efbb03 thumb32: Implement SHADD16/UHADD16 2021-02-01 17:50:46 -05:00
Lioncash
aa49b0db89 thumb32: Implement QSUB8/UQSUB8 2021-02-01 17:50:46 -05:00
Lioncash
874ab6a7b6 thumb32: Implement QADD8/UQADD8 2021-02-01 17:50:46 -05:00
Lioncash
d923fb24c6 thumb32: Implement QSUB16/UQSUB16 2021-02-01 17:50:46 -05:00
Lioncash
416fe26df0 thumb32: Implement QSAX/UQSAX 2021-02-01 17:50:14 -05:00
Lioncash
ad7c8bd042 thumb32: Implement QASX/UQASX 2021-02-01 17:31:30 -05:00
Lioncash
f52b8f924c thumb32: Implement QADD16/UQADD16 2021-02-01 17:31:30 -05:00
Lioncash
6f593da41b thumb32: Implement SSUB8/USUB8 2021-02-01 17:31:27 -05:00
Lioncash
271354ee95 thumb32: Implement SADD8/UADD8 2021-02-01 16:44:11 -05:00
Lioncash
8f42fd5c0e thumb32: Implement SSUB16/USUB16 2021-02-01 16:41:02 -05:00
Lioncash
0e28c63456 thumb32: Implement SSAX/USAX 2021-02-01 16:36:18 -05:00
Lioncash
21e404d3ab thumb32: Implement SASX/UASX 2021-02-01 16:31:25 -05:00
Lioncash
d529417875 thumb32: Implement SADD16/UADD16 2021-02-01 16:19:33 -05:00
merry
0e26e8a531
Merge pull request #569 from lioncash/t32-misc
thumb32: Implement miscellaneous category instructions
2021-02-01 21:06:36 +00:00
Lioncash
36fc596a51 thumb32: Implement QADD 2021-02-01 15:44:09 -05:00
Lioncash
cd6e4c7afd thumb32: Implement QSUB 2021-02-01 15:42:14 -05:00
Lioncash
65365ad2a3 thumb32: Implement QDADD 2021-02-01 15:39:39 -05:00
Lioncash
d96c8c662b thumb32: Implement QDSUB 2021-02-01 15:35:09 -05:00
Lioncash
c60cf921ee thumb32: Implement REV 2021-02-01 15:30:40 -05:00
Lioncash
0304dc7ce4 thumb32: Implement REV16 2021-02-01 15:27:31 -05:00
Lioncash
cee31c5274 thumb32: Implement RBIT 2021-02-01 15:20:24 -05:00
Lioncash
e2bc7eeb93 thumb32: Implement REVSH 2021-02-01 15:16:53 -05:00
MerryMage
e01583abba A64/system: Reorder fields of SystemRegisterEncoding
Matches manual, which allows for easier verification of correctness.
2021-02-01 20:01:39 +00:00
Lioncash
1ad99bb9b5 thumb32: Implement SEL 2021-02-01 15:01:21 -05:00
Lioncash
8d53048750 thumb32: Implement CLZ
Also fleshes out the generator to allow for generating thumb32
instructions as well.
2021-02-01 14:54:04 -05:00
MerryMage
f2345c1590 A64/system: Implement MSR/MRS for NZCV 2021-02-01 19:52:49 +00:00
bunnei
de389968eb A32: Add hook_isb option. 2021-01-28 20:47:39 -08:00
MerryMage
0f27368fda A64: Add hook_isb option 2021-01-26 23:41:21 +00:00
MerryMage
3806284cbe emit_x64{,_vector}_floating_point: Fix non-FMA execution
Avoid repeated calls to GetArgumentInfo
2021-01-02 20:40:32 +00:00
MerryMage
6023bcd8ad emit_x64_data_processing: Fix signed/unsigned warning 2021-01-02 20:12:48 +00:00
MerryMage
c15917b350 backend/x64: Add further Unsafe_InaccurateNaN locations 2021-01-02 20:12:48 +00:00
MerryMage
f9ccf91b94 Add Unsafe_InaccurateNaN optimization to all fma instructions 2021-01-02 17:22:50 +00:00
MerryMage
8c4463a0c1 emit_x64_data_processing: EmitSub: Use cmp where possible 2021-01-01 19:37:47 +00:00
MerryMage
e926f0b393 emit_x64_data_processing: Minor optimization for immediates in EmitSub 2021-01-01 13:35:01 +00:00
MerryMage
eeeafaf5fb Introduce Unsafe_InaccurateNaN 2021-01-01 07:18:05 +00:00
ReinUsesLisp
4a9a0d07f7 backend/{a32,a64}_emit_x64: Add config entry to mask page table pointers
Add config entry to mask out the lower bits in page table pointers.
This is intended to allow users of Dynarmic to pack small integers
inside pointers and update the pair atomically without locks.
These lower bits can be masked out due to the expected alignment in
pointers inside the page table.

For the given usage, using AND on the pointer acts the same way as a
TEST instruction. That said when the mask value is zero, TEST is still
emitted to keep the same behavior.
2020-12-29 19:16:46 +00:00
MerryMage
42059edca4 decoder_detail: Fix bit_position and one unused warnings in GetArgInfo 2020-12-28 23:34:23 +00:00
MerryMage
b47e5ea1e1 emit_x64_data_processing: Use BMI2 shifts where possible 2020-12-28 22:42:51 +00:00
ReinUsesLisp
ba6654b0e7 location_descriptor: Fix compare operator for single stepping
Compare `single_stepping` with the other's value instead of comparing it
with the local value.
2020-12-01 09:11:40 +00:00
Wunk
3e932ca55d
emit_x64_vector: Fix ArithmeticShiftRightByte zero_extend constant
Should be shifting in _bytes_ of `0x80`. Not bits.
2020-11-09 09:47:51 -08:00
Wunkolo
ec52922dae emit_x64_vector: Use explicit 64-bit mask constant
Exchange `~0ull` with `0xFFFFFFFFFFFFFFFF` when generating
the `zero_extend` constant.
2020-11-07 15:29:12 +00:00
Wunkolo
490160ef43 emit_x64_vector: GNFI implementation of ArithmeticShiftRightByte
The bit-matrix is generated up-front and added to the constant-pool.
I'm using an embedded 64-bit broadcast here(m64bcst) which is the particular
EVEX encoded version of the instruction with AVX512VL+GNFI.

If it ever really matters, then we would ideally detect specific host
features like bare-GFNI and specific subsets of AVX512 and emit
the assembly based on that rather than by the entire Icelake uarch.
2020-11-07 15:29:12 +00:00
Wunkolo
7df235aefb emit_x64_vector: GNFI implementation of EmitVectorLogicalShiftLeft8
Same principle as EmitVectorLogicalShiftRight8. An 8x8 galois identity
matrix is bit-shfited to allow for arbitrary 8-bit-lane shifts.
2020-11-07 15:29:12 +00:00
Wunkolo
5cc646ffed emit_x64_vector: GNFI implementation of EmitVectorLogicalShiftRight8
Bitshifts of the GFNI identity matrix generates a new matrix that
applies lane-wise bitshifts as well. This allows for a fast
single-instruction implementation of a byte-lane bitshift.
2020-11-07 15:29:12 +00:00
MerryMage
46f96904db decoder_detail: Add check for N==0 to GetArgInfo 2020-10-11 22:12:21 +01:00
Wunkolo
6bb49726f4 emit_x64_vector: GNFI+SSSE3 implementation of EmitVectorReverseBits
Performs a full 128-bit bit-reversal using only two instructions.

First by reversing all the bits of each byte using a galois matrix
multiplication(vgf2p8affineqb, Icelake), and then by reversing the bytes
themselves(pshufb, ssse3).
2020-10-02 05:56:59 +01:00
ReinUsesLisp
eb00bea1ff backend/x64/exception_handler_posix: Fix signal stack memory leak in SigHandler
std::malloc was being called inside SigHandler's constructor without a
std::free. This doesn't really matter as SigHandler is used as a
singleton and the OS will reclaim that memory. That said, properly
freeing memory keeps -fsanitize=address quiet.
2020-10-02 05:56:07 +01:00
Lioncash
d4c6fa3122 Squashed 'externals/fmt/' changes from 9bdd1596c..cd4af11ef
cd4af11ef Update version
1ebc2f7cc Bump version
f4c997062 Fix changelog
72920ba30 Update changelog
0907c08ae Fix handling of default alignmment with locale (#1801)
37c8f4eaf Don't use 128 bit integers with clang-cl (#1800)
eaaaec999 Workaround a bug in msvc
ccf8561cb Workaround broken numeric_limites, part 2 (#1787)
0cc73ebf7 Report error on missing named argument (#1796)
33efc3c94 Fix handling of iterators in locale-specific formatting (#1782)
b9d749095 Update version
86b63bb71 Bump version
cbf6be960 Update changelog
229ee9b46 Workaround broken numeric_limits (#1725)
2b7a146fa Fix a regression in handling digit separators (#1782)
89d0c7124 Fix compatibility with CMake 3.4 (#1779)
f19b1a521 Update version
5c67fefb2 Fix a changelog entry
1d2a556e1 Fix undefined reference error
04c9b62fb Merge release branch
6be6762e5 Fix date
f1dd2eb3c Bump version
fbf3b943c Workaround a bug in gcc
a29a01d30 Fix docs
9f0b3afb7 Bump version in namespace
86b2f99f8 Fix the docs
c472ff12d Update version
5173a76ba Update version
1614af352 Minor corrections in the changelog
569a9b3a7 Bump version
4e7e3c65a Update docs
0f7a6bfa1 Add a section on std::format compatibility
4faec5a5e Update README.rst
7dbc8ac71 Update changelog
c87dd746f Update changelog
372175caf Revert changelog changes
904754876 Add ClickHouse to the list of projects (#1751)
d30bca64e Revert changelog conversion since GFM is not supported there
d6047cdc4 Update changelog
810241b36 Convert changlog to markdown
661c47473 Rename changelog
7c33059fa Update ChangeLog.rst
9e20883ab Update README.rst
41899d522 Update changelog
f42f45908 Update changelog
2381df654 Update readme
7ae816563 Update README.rst
c56cf3d07 Update changelog and readme
01309a34a Deprecate arg_formatter
a62d06055 Update changelog
23e3a2eee Update changelog
d8e0554b9 Disable numeric formatting by default
1e8eea4f4 Update changelog
44bd5384a Fix formatting
20e19387a Update changelog
56fed7814 FMT_NUMERIC_ALIGN -> FMT_DEPRECATED_NUMERIC_ALIGN
56e63078f Make the n specifier an opt-in
31ce6bc70 Fix a conversion warning with Clang10 on Windows (#1750)
c9c5b90da Fix a typo. Thanks Tracy Chapman from TripleChecker
1f3f84631 Fix a typo
5de62af60 Fix possible infinite recursion in FMT_ASSERT (#1744)
cbddab2fe Use consistent include style
f69b6eaab Add a simple buffered stream with no sync
ba363b3a2 Use digit pairs as in unrolledlut
a6f8e7d86 Update changelog
e753244ab Update changelog
98a7a8b40 Update changelog and disable internal
3135d95fd Don't use non-portable attribute
8630a8f5f Tweak the docs
cc3a88e6b Extract docs from compile.h
79c4b6bd7 Apply clang-format
d130ee070 Document format string compilation
d0f90b5be Spelling fixes
6e080660d Update README.rst
31c3a2426 Spelling fixes
613b3b459 Spelling fixes
978521bb8 Fix a compile error introduced in #1738
4e94c649f Deprecate compile
1a83443e6 Add user-defined type support to compilation
8bef1c3b3 Tweaks for EDG based compilers (Intel, nVidia, MCST/Elbrus, etc).
b287c37c6 Do not use -Wl,--as-needed with emscripten.
2cac8a9d2 Reintroduce UDT support to fmt::to_string and test ADL
9a4cc8842 Add FMT_COMPILE support to format_to
5ddf9ee1b Streamline default FP formatting
0b3a83f7f Update README.rst
5aa5c9873 Added  #define WIN32_LEAN_AND_MEAN before including windows.h (#1729)
397ad1bec Optimize common case
7431165f3 Make to_string bypass format
ee4d4c7fd Inline compiled format
ab2f8484e Finish text::format
e900d735b Re-enable assert in format_decimal
f4de7b684 Fix ambiguity
1f8f5450b Reuse format_decimal
d702a68df Fix formatting of bool with FMT_COMPILE and add more tests
e956a14e9 Use write instead of format_int in to_string
98dcc251e Undo branching reduction
5b8641ddd Undo branching reduction
8c88abde6 Fix sign handling in 'L'
23b976a61 Reduce branching
9edee0e72 Optimize small string parsing
a909d42b7 Fix a warning
16637341b Enable compilation for all types
2d71d7e03 Add a simple format string compilation API
d259fcfb0 Tweak comments
704ed557a Move project in order to solve a CMake warning
8603bd20d Update README.rst
547f12ae6 Fix a warning (#1722)
f904e8a1b c++11 use formatting user-defined types (#1721)
100e8af08 Update README.rst
c11d0f056 Update README.rst
2453ee576 Improve default formatting
47ae52155 MINGW cross compiler fixes
936a1833c Add default_arg_formatter
f2c9cb624 Fix a UB
d3107f855 Cleanup arg_formatter_base
5e7c70e20 Simplify arg_formatter_base
38cc68b3e Inline visitor
6732ea500 Make symbols readable
57ddc77ce Make advance_to a noop for back_insert_iterator
50bad7d62 Optimize format string parsing
8f7a824e4 Inline visit
f11e96870 Optimize format string parsing
09737dd83 Optimize format handler
d9e3d6e6e Move format_handler to detail
795b47a7b Fix a warning (#1712)
95c6ac0cc fix typo which caused the loss of the counting information when using a printf context with a truncating_iterator
21409cfdd Fix warnings
88c8d534e Move digits10 to where they belong and add comments
0f3eaeac0 Fix a warning
344218510 Ignore /doc/node_modules directory
16aec0617 Cleanup arg_formatter_base
1e1193590 Fix format_decimal overloads
0893c9c2e Inline parse_format_string
3245145a4 Remove undocumented buffer_range and output_range
57fc44907 Increase VM disk size
7d22bebb6 Remove uses of buffer_range
8f2b5fe74 Don't install sphinx cache files
f095c67b6 Remove uses of buffer_range
5aabf1f71 Simplify copy_str
19c5b5d15 Simplify arg_formatter
519571ede Simplify arg_formatter_base
ac8dfd841 Improve handling of separators
2c6165a22 Reduce the number of comparisons
28639969e Use memcpy for copying digits
f5fa1dee5 Support custom FMT_INC_DIR in pkgconfig and cmake configs (#1702)
51bf9cfac Fix Mingw support
1a716caf5 Optimize common case
98d4bbf81 Update README.rst
8c8f74a87 fix zero flag for char types and make zero flag ignored if a precision is specified
bc1b89da2 Temporarily revert parsing changes
a7fb321ac Remove a redundant branch
8cadb9650 fix max/min macro (#1697)
297c3b2ed Fix an example (thanks Alexey Kuzmenko)
943532fec Make ostream formatter work with compile-time format strings (#1692)
bd8804019 Update README.rst
f230300ac Knuth is using fmt library (#1691)
a265e25b7 Optimize small string parsing
2aa2526f6 Optimize small string concatenation
8d78045e7 Move void_t to where it's used
7aafa6bc6 Update analytics
c66aae165 Adding sentinel support to fmt::join(). (#1689)
6d66de380 Add c specifier support to integral types (#1652)
6b219a58d fix interaction of space flag and '+' flag, as well as '-' flag and '0' flag (#1687)
eee2023c2 Update signatures
c5ed73aab Add fmt::detail::buffer to the docs (#704)
ea1cd9638 Fix apidoc
d3964d7b1 Merge branch 'master' of github.com:fmtlib/fmt
d18c6723a Update docs
96c18b26c make plus flag for printf not be ignored for char argument (#1683)
ba25baeb9 Apply doc patch to 6.2.1
981b517cc nested replacement fields may omit arg_id (#1681)
922ea924b Make dynamic_format_arg_store reusable and add reserve() (#1677)
e0d98923c Update version
806926537 internal -> detail (#1538)
963ee0831 Simplify named arguments
02a6fe59f Named arguments go brrr
de290f5c4 Ditch internal::arg_map
d0623de51 Bump version
73e335ed3 Make implicit capture explicit for C++20 (#1669)
b4d46e398 Update changelog
a182f7341 Update changelog
68201831a Support named args in dynamic_format_arg_store (#1655). (#1663)
7f723fbcb Consistently namespace qualify size_t
c06851456 Purge basic_writer
2f05054dd Purge basic_writer
f0ce21164 Revert enum change
44639b11f Fix some warnings (#1667)
1c86a99e8 Purge basic_writer
8f511fc12 Make copyfmt not throw (#1666)
59fe455f3 Remove compatibility stubs
b0f47a13e Separate nonfinite formatting
d6cea50d0 Remove deprecated APIs
40bc7163f Move FMT_MAYBE_UNUSED to where it's actually used
080e44d0b Fix inconsistent type detection (#1662)
7e57cace5 Exclude std::abort from compilation when compiling CUDA with Clang (#1661)
7b66e2f21 Inherit arg_formatter_base from basic_writer
bab3f5800 Refactor pointer formatting
9cc7edfdd Move int_writer to the namespace scope
8d9d528bf Improve handling of alignment
8efd1a8ef Improve handling of alignment
a71bc9c82 Use '0' fill with numeric align for consistency with std::format
60d85d598 Suppress ubsan warning
c3099beb6 Cleanup
cbb4cb899 Remove undocumented deprecated APIs
b85e9ac38 Simplify vformat_to
e3710ab97 FMT_CONSTEXPR -> constexpr
d59751f0f Update date formatting example to use threadsafe localtime
d6abb2fa0 Reduce library size
e9fdea90b Update README.rst
44b6584f2 Update README.rst
78f041ab5 build: Fix installation paths
7ca89bf87 Reduce template bloat in write_int
3c114d091 Fix a shadowing warning (#1658)
e2ef12a8c Allow to avoid inclusion of os.cc in fmt target
bca82719a Pass iterator by value
99da38962 Make write_padded non-members
f19d66794 Bump fuzzer allocation limit
3e6984761 Reduce branching in write_padded
9ac1eebd4 Reduce library size
e2ff91067 Replace FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION  with fmt-specific macro (#1650)
f2ed03b91 Fix a warning (#1649)
9dde9f013 Reduce library size
b1af642d1 Reduce library size
4a617f25c Clarify encoding conversion in chrono
6f435f55c Improve compile time by using extern template (#1452)
cb475cb88 Clarify why we don't check argument id
1e1ac6e96 Check dynamic width/precision id at compile time (#1614)
e51c449fe Revert "Check dynamic widht/precision id at compile time (#1614)"
0463665ef Don't access a C string past precision in printf (#1595)
7d748a6f8 Check dynamic widht/precision id at compile time (#1614)
2b75bd7ce Get rid of do_check_format_string
4a1d5931c Simplify udl_formatter with FMT_STRING
811b0f905 Enable compile-time error tests
450e8eed9 Fix markup
b8fbcec1b Clarify formatter reuse
56bc86ffa Suppress bogus MSVC analysis warnings
3f79357ef Fix a recent regression in handling max packed arguments
8a11148f9 Add Facebook Folly to the list of projects
e371e8b68 Tweak readme
813732fed Improve readme formatting
3670d5b3f README: add vectorized.io/redpanda in the list of users
9e2ad7cf6 Add windows terminal to the projects using {fmt}
63479c851 Use a delegating ctor and add inlines
5944fcad3 Remove remaining wchar_t instantiation
e253b371b Don't generate RTTI for allocator
0c86f467b Fix build on ancient gcc
1929df4bc Simplify format_args
a13822181 Always inline arg_data functions
04e0dfd4b Always inline value ctors
04cde756b Simplify checks
c9a57b9a8 Fix incorrect assumptions about nul termination
f46f5ecaf Reenable constexpr _compile on GCC 9
6e8d7e277 Don't use constexpr on Intel compiler (#1628)
567ed03f8 Merge arg overloads and cleanup
c3fa33314 Remove warning in core.h with when compiling with gcc and -Wshadow
84898b462 Remove warning in format.h when compiling with gcc and -Wshadow
538d83fd0 Cleanup named arguments
8a4630686 Improve handling of named arguments
a9d62d3f3 Add check for CompiledFormat to avoid ambiguous call
fdcf7870a Add stack-based named argument storage
5899267c4 Fix a clang-tidy warning
07b4c246e Fix a typo
e99809f29 Fix ostream support in sprintf (#1631)
3cd5179f3 Fixed clang tidy warning -multiple declarations in a single statement reduces readability
7404e33a7 Fix clang warning about explicit ctor
3aab2171e Clean up basic_format_args
7645ca072 Clean up printf
e30d8391e Suppress an MSVC warning (#1622)
8cd8ef03e Simplify warning suppression
bbb6b357c Add floating-point L specifier (#1624)
36ea32640 Suppress a bogus MSVC warning
141a00d64 Define FMT_EXTERN_TEMPLATE_API on export
3860edc5d Bump version
7d01859ef Fix handling of unsigned char strings in printf
63b23e786 Merge branch 'master' of github.com:fmtlib/fmt
4999796c1 Fix the docs
34b3f7b7a Avoid windows issue with min() max() macros
27e3c0fe9 Update signature in the docs

git-subtree-dir: externals/fmt
git-subtree-split: cd4af11efc9c622896a3e4cb599fa28668ca3d05
2020-09-19 14:25:26 -04:00
Wunkolo
c2d5f6da90 block_of_code: Add HasAVX512_Icelake
Detect AVX512 feature support up to the [Icelake-level featureset](https://en.wikipedia.org/wiki/AVX-512#CPUs_with_AVX-512)
2020-09-19 15:20:40 +01:00
Lioncash
0e1112b7df Revert "basic_block: Mark move constructor and assignment as noexcept"
This reverts commit 4f12e86ebb.

Big fan of MSVC preventing standard behavior.
2020-08-14 16:49:40 -04:00
Lioncash
889635d17d general: Resolve -Wmissing-prototypes warnings 2020-08-14 14:50:09 -04:00
Lioncash
68fea20020 common/assert: Resolve several -Wextra-semi warnings
Resolves 200+ warnings.
2020-08-14 14:45:53 -04:00
Lioncash
4f12e86ebb basic_block: Mark move constructor and assignment as noexcept
Allows the type to play nicely with standard library facilities better
(also we shouldn't be throwing in move operations to begin with).
2020-08-14 14:38:28 -04:00
Lioncash
34f4d99454 block_of_code: Remove unused variables in GenRunCode()
These aren't used, so they can be removed.
2020-08-14 14:35:17 -04:00
Lioncash
29d1758923 ir_matcher: Add missing header guard 2020-08-14 14:32:34 -04:00
MerryMage
6bbc53839f Unsafe Optimization: Extend Unsafe_UnfuseFMA to all FMA-related instructions 2020-07-12 12:45:12 +01:00
MerryMage
d05d95c132 Improve documentation of unsafe optimizations 2020-07-12 12:41:11 +01:00
MerryMage
82417da780 emit_x64{_vector}_floating_point: Add unsafe optimizations for RSqrtEstimate and RecipEstimate 2020-07-11 14:05:57 +01:00
MerryMage
761e95eec0 A64: Add unsafe_optimizations option
* Strength reduce FMA unsafely
2020-07-06 21:02:30 +01:00
MerryMage
82868034d3 A32/ASIMD: Ensure decoder table is correct
* Raise a DecoderError instead of ASSERT-ing on a decode error
* Correct ASIMD decode table
* Write a test which verifies every possible ASIMD instruction
2020-07-05 18:45:42 +01:00
MerryMage
3c742960a9 simd_three_same: Ensure zero in upper for PairedMinMaxOperation 2020-07-04 11:25:36 +01:00
MerryMage
735738c7b6 A32: Implement ASIMD VPMAX, VPMIN (floating-point) 2020-07-04 11:04:10 +01:00
MerryMage
88e74cb2ba A32: Implement ASIMD VPMAX, VPMIN (integer) 2020-07-04 11:04:10 +01:00
MerryMage
d9914b1d51 simd_permute: Implement VectorUnzip with deinterleave lower 2020-07-04 11:04:10 +01:00
MerryMage
f35aaa017c IR: Add VectorDeinterleave{Even,Odd}Lower 2020-07-04 11:04:10 +01:00
MerryMage
df477c46c2 asimd_load_store_structures: VST1 undef correction 2020-07-04 11:04:10 +01:00
MerryMage
4ba1f8b9e7 Add optimization flags to disable specific optimizations 2020-07-04 11:04:10 +01:00
MerryMage
3eed024caf asimd_three_same: Ignore Q=1 for VPADD (floating-point) 2020-07-04 11:04:10 +01:00
MerryMage
896cb46c89 asimd_*: Standardize order of n and m to reduce confusion 2020-07-04 11:04:10 +01:00
MerryMage
4b8a781c04 emit_x64_floating_point: Introduce ICODE 2020-07-04 11:04:10 +01:00
MerryMage
7022281a0b emit_x64_vector_floating_point: Introduce ICODE 2020-07-04 11:04:10 +01:00
Merry
4f967387c0 asimd_three_regs: Reimplement asimd_VMLAL in terms of WideInstruction 2020-06-27 13:06:46 +01:00
Merry
7997404ee7 A32: Implement ASIMD V{ADD,SUB}{W,L} 2020-06-27 12:58:47 +01:00
Merry
868bd00ab5 A32: Rearrange translators for ASIMD Three Registers
* Separate Three Registers with Different Lengths from Same Lengths decoders
2020-06-27 11:15:07 +01:00
Merry
b1ff971a92 backend/x64: Temporarily avoid use of DefineValue(Argument&)
Issues with inappropriate values in upper bits of values
2020-06-27 10:52:59 +01:00
MerryMage
8a1f106dba decoder/asimd: Correct names of scalar exceptions 2020-06-25 17:40:11 +01:00
MerryMage
495f58eed8 A32: Implement ASIMD VSHLL 2020-06-24 23:47:13 +01:00
MerryMage
ed48a9d7d5 A32: Implement VFPv5 VRINTX 2020-06-24 22:31:58 +01:00
MerryMage
46445d0866 A64: Remove NaN accuracy setting
Always do accuracte NaN handling.
2020-06-24 22:26:10 +01:00
Lioncash
b5df8d1ef8 A32: Implement ASIMD VQDMULL (scalar) 2020-06-23 18:19:42 +01:00
Lioncash
20a2bf29fc A32: Implement ASIMD VQRDMULH (scalar) 2020-06-23 18:19:42 +01:00
Lioncash
ab5efe8632 A32: Implement ASIMD VQDMULH (scalar) 2020-06-23 18:19:42 +01:00
MerryMage
2008fda88b emit_x64_floating_point: Correct error in s16 rounding in EmitFPToFixed 2020-06-22 22:54:38 +01:00
MerryMage
3ea49fc6d6 A32: Implement VFPv3 VCT (between floating-point and fixed-point) 2020-06-22 22:08:58 +01:00
MerryMage
48b2ffdde9 A32: Implement ASIMD VQMOVUN, VQMOVN 2020-06-22 20:02:52 +01:00
MerryMage
52b8039367 A32: Implement VFPv5 VRINT{R,Z} 2020-06-22 19:35:32 +01:00
MerryMage
47bc99ad9f asimd_load_store_structures: Fix 2-byte aligned vld1.16
Previously incorrectly undefined
2020-06-22 18:46:22 +01:00
Lioncash
dd8d5497da A32: Implement ASIMD VQRDMULH 2020-06-22 17:31:57 +01:00
Lioncash
0b7a111b54 A32: Implement ASIMD VQDMULH 2020-06-22 17:31:57 +01:00
Lioncash
39488e4aad A32: Implement ASIMD VRSHRN 2020-06-21 23:15:43 +01:00
Lioncash
86b0e5c1c5 A32: Implement ASIMD VQSHRN 2020-06-21 23:15:43 +01:00
Lioncash
85222e3e65 A32: Implement ASIMD VQSHRUN
We can leverage ShiftRightNarrowing() to implement this.
2020-06-21 23:15:43 +01:00
MerryMage
562a98bcf9 A32: Implement ASIMD VCVT (between floating-point and fixed-point) 2020-06-21 20:23:40 +01:00
MerryMage
6f56043a73 A32: Implement ASIMD VFMA, VFMS 2020-06-21 20:21:53 +01:00
Lioncash
aa0358d324 A32: Implement ASIMD VMLAL/VMLSL (integer) 2020-06-21 20:03:19 +01:00
Lioncash
eab26b404a A32: Implement ASIMD VABAL 2020-06-21 20:01:08 +01:00
Lioncash
98581839ca A32: Implement ASIMD VABDL 2020-06-21 19:55:00 +01:00
MerryMage
db85e7ced5 asimd: Add missing three registers of different lengths instructions 2020-06-21 19:54:32 +01:00
Lioncash
95919594d1 A32: Implement ASIMD VQSHL/VQSHLU (immediate) 2020-06-21 19:26:30 +01:00
MerryMage
3557576ece A32: Implement ASIMD AESD, AESE, AESIMC, AESMC 2020-06-21 18:39:57 +01:00
Fernando Sahmkow
2fa1c1d13c A32: Allow cleaning up exclusive state from the interface.
This function is normally required for emulating certain OS mechanisms.
2020-06-21 18:18:33 +01:00
MerryMage
df58a429ee A32: Implement ASIMD VQRSHRN 2020-06-21 17:41:18 +01:00
MerryMage
589d717af5 A32: Implement ASIMD VQRSHRUN 2020-06-21 17:41:18 +01:00
MerryMage
e009d99924 A32: Implement ASIMD VSHRN 2020-06-21 17:41:18 +01:00
MerryMage
473949d486 asimd_load_store_structures: Suppress MSVC shift warning 2020-06-21 17:41:18 +01:00
MerryMage
8f0f1cfd66 A32: Implement ASIMD VST{1,2,3,4} (single n-element structure from one lane) 2020-06-21 16:27:33 +01:00
MerryMage
5a597f415c A32: Implement A32 VLD{1,2,3,4} (single n-element structure to one lane) 2020-06-21 16:22:43 +01:00
MerryMage
f221912409 bit_util: Bits without template arguments 2020-06-21 16:07:59 +01:00
MerryMage
3202e4c539 A32: Implement ASIMD VLD{1,2,3,4} (single n-element structure to all lanes) 2020-06-21 15:25:26 +01:00
MerryMage
d7197745ac emit_x64_vector_floating_point: fpcr_controlled is unused when fsize == 16 in EmitFPVectorToFixed 2020-06-21 14:46:06 +01:00
MerryMage
b32fc5ab0f a64_emit_x64: EmitVAddrLookup: Use bzhi instruction when silently_mirror_page_table is active and BMI2 is available 2020-06-21 14:46:06 +01:00
MerryMage
809dfe9c54 A32: Implement ASIMD VCVT (between floating-point and integer) 2020-06-21 14:28:25 +01:00
MerryMage
43a4b2a0b8 ir_emitter: Remove dummy fpcr_controlled arguments from scalar FP instructions 2020-06-21 14:28:25 +01:00
MerryMage
c836b389c8 emit_x64_vector_floating_point: Add fpcr_controlled argument to all IR instructions 2020-06-21 14:28:25 +01:00
MerryMage
33a81dae68 asimd: VEXT was being shadowed 2020-06-21 13:12:19 +01:00
MerryMage
bf093395d8 A32: Implement ASIMD VMOVN 2020-06-21 12:35:39 +01:00
MerryMage
c7785cd982 A32: Implement ASIMD VUZP and VZIP 2020-06-21 12:34:55 +01:00
MerryMage
603cd09c8f A32: Implement ASIMD VTRN 2020-06-21 12:14:13 +01:00
MerryMage
a8b481ab63 simd_permute: Implement TRN{1,2} in terms of VectorTranspose 2020-06-21 12:14:13 +01:00
MerryMage
7d1e103ff5 IR: Implement VectorTranspose 2020-06-21 12:14:13 +01:00
MerryMage
9cc11681dc A32: Implement ASIMD VMLAL, VMLSL, VMULL (scalar) 2020-06-21 10:31:30 +01:00
MerryMage
69a1d58a2b A32: Implement ASIMD VMULL 2020-06-21 10:00:24 +01:00
Lioncash
8c23f02330 A32: Implement ASIMD VABD 2020-06-21 07:54:21 +01:00
Lioncash
fc1633a2ea A32: Implement ASIMD VABA 2020-06-21 07:54:21 +01:00
Lioncash
bdb92f7055 asimd: Split out VABA/VABD decoders
These differ in bit encodings anyway
2020-06-21 07:54:21 +01:00
Lioncash
230fa02648 A32: Implement ASIMD VMLA/VMLS (scalar)
While we're at it, we can join the implementation of VMUL into a common
function.
2020-06-21 07:51:17 +01:00
MerryMage
239ee289cf A32: Implement VDUP (scalar) 2020-06-21 00:22:42 +01:00
Lioncash
a8efe3f0f5 A32: Implement ASIMD VACGE/VACGT 2020-06-21 00:02:48 +01:00
Lioncash
e319257ec0 A32: Implement VCEQ/VCGE/VCGT (floating point) 2020-06-21 00:02:48 +01:00
Lioncash
faefb264a6 A32: Implement ASIMD VCEQ (integer) 2020-06-21 00:02:48 +01:00
Lioncash
7276993352 A32: Implement ASIMD VCGE (integer) 2020-06-21 00:02:48 +01:00
Lioncash
7292320445 A32: Implement ASIMD VCGT (integer) 2020-06-21 00:02:48 +01:00
MerryMage
fda4e11887 A32: Implement ASIMD VMOV (general-purpose register to scalar) 2020-06-20 23:40:48 +01:00
MerryMage
7ec22b4e1d A32: Implement ASIMD VMOV (scalar to general-purpose register) 2020-06-20 23:30:56 +01:00
MerryMage
8bbc9fdbb6 A32: Implement ASIMD VTBX 2020-06-20 22:35:31 +01:00
Lioncash
06f7229c57 A32: Implement ASIMD VPADAL (integer) 2020-06-20 22:28:47 +01:00
Lioncash
266c6a2000 A32: Implement ASIMD VPADDL (integer) 2020-06-20 22:28:47 +01:00
Lioncash
4bb286ac23 A32: Implement ASIMD VPADD (integer) 2020-06-20 21:22:14 +01:00
Lioncash
1ffeeeb6a2 A32: Implement ASIMD VMAX/VMIN (integer) 2020-06-20 21:20:47 +01:00
Lioncash
945b757b6c A32: Implement ASIMD VMLA/VMLS (integer) 2020-06-20 21:20:21 +01:00
MerryMage
715db8381f A32: Implement ASIMD VMUL (scalar) 2020-06-20 20:34:08 +01:00
MerryMage
b0beecdd41 A32: Implement ASIMD VTBL 2020-06-20 19:25:14 +01:00
MerryMage
28f27bc19d A32: Implement ASIMD VEXT 2020-06-20 19:05:14 +01:00
MerryMage
e8c460c167 A32: Implement ASIMD VDUP (ARM core register) 2020-06-20 16:02:43 +01:00
MerryMage
15ee562dd0 decoder/asimd: Add misc data-processing instructions 2020-06-20 15:39:00 +01:00
MerryMage
92cb4a5a34 A32: Implement ASIMD VRSQRTE 2020-06-20 15:13:22 +01:00
MerryMage
6f59c2cd8e A32: Implement ASIMD VRECPE 2020-06-20 15:07:06 +01:00
MerryMage
d3dc50d718 A32: Implement ASIMD VRSQRTS 2020-06-20 15:06:06 +01:00
MerryMage
8f506c80c3 A32: Implement ASIMD VRECPS 2020-06-20 14:39:05 +01:00
MerryMage
9eef4f7471 A32: Implement ASIMD VMLA, VMLS (floating-point) 2020-06-20 14:31:06 +01:00
MerryMage
60f6e729ac A32: Implement ASIMD VABD (floating-point) 2020-06-20 14:25:04 +01:00
MerryMage
f58e247ef3 A32: Implement ASIMD VPADD (floating-point) 2020-06-20 14:25:04 +01:00
MerryMage
e006f0a205 A32: Implement ASIMD VSUB (floating-point) 2020-06-20 14:20:28 +01:00
MerryMage
4c939b9d0a A32: Implement ASIMD VADD (floating-point) 2020-06-20 14:20:28 +01:00
MerryMage
5ec8e48593 A32: Implement ASIMD VMUL (floating-point)
* Also add fpcr_controlled arguments to FPVectorMul IR instruction
* Merge ASIMD floating-point instruction implementations
2020-06-20 14:20:28 +01:00
MerryMage
bb4f3aa407 A32: Implement ASIMD VMAX, VMIN (floating-point) 2020-06-20 03:21:07 +01:00
Lioncash
8d067d5d60 A32: Implement ASIMD VMUL (integer and polynomial) 2020-06-20 00:53:56 +01:00
Lioncash
ed6ca58058 A32: Implement ASIMD VCEQ, VCGE, VCGT, VCLE, VCLT with zero
Fairly self-explanatory, we can leverage the existing IR functions for
the purpose of these instructions.

In the integer case, we can just insert function pointers
into an array and index it, given all comparison primitives exist
already for the integer side of things.
2020-06-20 00:50:40 +01:00
MerryMage
656419286c ir: Add fpcr_controlled argument to FPVector{Equal,Greater,GreaterEqual} 2020-06-20 00:50:40 +01:00
MerryMage
1b3a70a83c backend/x64: Implement separate MSXCSR for ASIMDStandardValue 2020-06-20 00:00:36 +01:00
MerryMage
d3664b03fe ir_emitter: Default fpcr_controlled arguments to true 2020-06-19 22:51:23 +01:00
Lioncash
794440cf8d A32: Implement ASIMD VRSHL 2020-06-19 21:27:48 +01:00
Lioncash
682621ef1a A32: Implement ASIMD VQSHL (register) 2020-06-19 21:27:48 +01:00
Lioncash
e46fb98cc5 A32: Implement ASIMD VSHL (register) 2020-06-19 21:27:48 +01:00
MerryMage
ad96b2b18d VFPv5: Implement VCVT{A,N,P,M} 2020-06-19 20:31:43 +01:00
MerryMage
6a965b80d6 VFPv5: Implement VRINT{A,N,P,M} 2020-06-19 20:24:13 +01:00
MerryMage
3e252cdbfc VFPv5: Implement VSEL 2020-06-19 19:44:45 +01:00
MerryMage
669d05caca VFPv5: Implement VMINNM 2020-06-19 19:44:45 +01:00
MerryMage
6e7ea151a3 VFPv5: Implement VMAXNM 2020-06-19 19:39:01 +01:00
MerryMage
4df3b2f97f vfp: Add decoders for VFPv5
These instructions were introduced in the Cortex-M7
2020-06-19 19:24:32 +01:00
MerryMage
55c021fe82 emit_x64_aes: AESNI implementations of all opcodes 2020-06-19 12:11:45 +01:00
Lioncash
551e207661 A32: Implement ASIMD VSUB (integer) 2020-06-19 11:31:38 +01:00
Lioncash
4d6f68525d A32: Implement ASIMD VADD (integer) 2020-06-19 11:31:38 +01:00
Lioncash
fbdae61c13 A32: Implement ASIMD VMVN (register)
Fairly straightforward
2020-06-19 11:31:14 +01:00
MerryMage
b759773b3b a32_emit_x64: EmitVAddrLookup: Use 64-bit registers where required 2020-06-19 00:44:52 +01:00
merry
687c604197
Merge pull request #532 from lioncash/shift
A32: Implement several ASIMD shift instructions
2020-06-19 00:22:18 +01:00
MerryMage
7dd9901de2 a32_emit_x64: Incorrect type in ExclusiveWriteMemory 2020-06-19 00:19:46 +01:00
Lioncash
00b2f9b319 asimd: Prevent misdecodes from occurring
Pointed out by Mary when reviewing the shift code.
2020-06-18 15:04:48 -04:00
MerryMage
87f6e412d0 emit_x64_vector: SSE4.1 implementation of EmitVectorPolynomialMultiply{Long}8 2020-06-18 18:44:00 +01:00
MerryMage
f5b41aabc6 emit_x64_vector: Implement EmitVectorPolynomialMultiplyLong64 in terms of pclmulqdq 2020-06-18 18:04:23 +01:00
MerryMage
d34763242c Revert "A32: Implement ASIMD VCEQ, VCGE, VCGT, VCLE, VCLT with zero"
This reverts commit 179951b10f.

These instructions require StandardFPSCRValue.
2020-06-18 17:38:40 +01:00
Lioncash
179951b10f A32: Implement ASIMD VCEQ, VCGE, VCGT, VCLE, VCLT with zero
Fairly self-explanatory, we can leverage the existing IR functions for
the purpose of these instructions.

In the integer case, we can just insert function pointers
into an array and index it, given all comparison primitives exist
already for the integer side of things.
2020-06-18 17:01:57 +01:00
Lioncash
6ca20c2fe3 A32: Implement ASIMD VSLI 2020-06-18 11:51:08 -04:00
Lioncash
887732d8a8 A32: Implement ASIMD VSRI 2020-06-18 11:28:12 -04:00
Lioncash
8b98c91ecc A32: Implement ASIMD VSHL 2020-06-18 11:18:33 -04:00
Lioncash
69c999bc66 A32: Implement ASIMD VRSRA
Now that we have the accumulation and rounding code in place, VRSRA is
extremely trivial to implement.
2020-06-18 11:03:39 -04:00
Lioncash
14fdd15199 A32: Implement ASIMD VRSHR 2020-06-18 11:00:45 -04:00
Lioncash
276e0b71dc A32: Implement ASIMD VSRA 2020-06-18 11:00:27 -04:00
Lioncash
054dff7cd5 A32: Implement ASIMD VTST 2020-06-18 15:34:05 +01:00
Lioncash
6c142bc5cc A32: Implement ASIMD VSHR 2020-06-18 10:30:20 -04:00
MerryMage
13367a7efd A64: Match A32 page_table code
Here we increase the similarity between the A64 and A32 front-ends in terms of their
page_table handling code. In this commit, we:

* Reserve and use r14 as a register to store the page_table pointer.
* Align the code to be more similar in structure.
* Add a conf member to A32EmitContext.
* Remove scratch argument from EmitVAddrLookup.
2020-06-18 12:22:59 +01:00
Lioncash
08350d06f1 A32: Implement ASIMD VQNEG 2020-06-18 09:49:29 +01:00
Lioncash
f6b665f5a4 A32: Implement ASIMD VQABS 2020-06-18 09:49:29 +01:00
MerryMage
b88c291f81 A32: Detect misaligned memory accesses
This avoids issues with misaligned memory accesses writing into the next page.
2020-06-17 17:51:37 +01:00
MerryMage
9f3277540a Merge A32 and A64 exclusive monitors 2020-06-17 10:33:09 +01:00
Lioncash
4b371c0445 A32: Implement ASIMD VREV{16, 32, 64} 2020-06-17 10:21:59 +01:00
Lioncash
6dd2c94095 A32: Implement ASIMD VABS
Very similar to VNEG in that the only thing that differs is the function
called.
2020-06-16 22:42:18 +01:00
MerryMage
53422bec46 a64_emit_x64: Reduce code duplication in exclusive memory code 2020-06-16 18:16:33 +01:00
MerryMage
a1c9bb94a8 A32: Add yuzu-specific hacks 2020-06-16 17:54:21 +01:00
MerryMage
2c1a4843ad A32 global exlcusive monitor 2020-06-16 17:54:21 +01:00
MerryMage
58abdcce5b backend/x64/a32_*: Rename config to conf
Standardize on one name for both a32_* and a64_*.
2020-06-16 14:56:44 +01:00
MerryMage
7ea521b8bf a32_emit_x64: Change ExclusiveWriteMemory64 to require a single U64 argument 2020-06-16 13:32:50 +01:00
MerryMage
aa341b7eea a32_emit_x64: Make ExclusiveWrite a member function of A32EmitX64 2020-06-16 13:03:17 +01:00
MerryMage
34ef5142e3 a32_emit_x64: Specify callback as template argument
Removes unnecessary switch statement.
2020-06-16 10:23:51 +01:00
MerryMage
58b2c83944 a32_emit_x64: Reduce mov code duplication in {Read,Write}Memory 2020-06-16 10:14:06 +01:00
Lioncash
aabd0d824d A32: Add immediate creation helper
Provides the same helper function that exists within the A64 frontend
for creating immediate values.
2020-06-16 09:54:28 +01:00
Lioncash
93ed3441b7 A32: Implement ASIMD VCLS/VCLZ/VCNT 2020-06-16 09:54:28 +01:00
Lioncash
15b3de95e4 A32: Implement VNEG 2020-06-16 01:53:21 +01:00
MerryMage
2796a85096 interface/a32: Remove descriptor argument from Disassemble 2020-06-12 15:27:42 +01:00
MerryMage
3ccc415c52 emit_x64_saturation: Improve codegen for saturated result in EmitSignedSaturation 2020-06-12 15:24:37 +01:00
MerryMage
e953f67201 emit_x64_packed: PackedAbsDiffSumS8: Fix case when bits above the lower 32 bits are not zero 2020-06-12 15:24:09 +01:00
MerryMage
c4cf0b3e47 exception_handler_posix: Just disable fastmem if initialization fails 2020-06-10 22:52:27 +01:00
MerryMage
55bddc767f backend/x64: Touch PEXT/PDEP code
* Use pext/pdep where not previously used
* Limit pext/pdep to non-AMD platforms due to slowness on AMD
* Use imul/and as alternatives for AMD and non-BMI2 platforms
2020-06-10 22:30:22 +01:00
MerryMage
f495018f53 block_of_code: Encapsulate CPU feature detection code 2020-06-09 21:25:57 +01:00
MerryMage
feddf69cb4 emit_x64_crc32: Use same constants 2020-06-06 20:46:09 +01:00
MerryMage
66a356e6cb emit_x64_crc32: Further improvements to codegen 2020-06-06 19:04:20 +01:00
MerryMage
bb203429c6 crc32: Remove unnecessary masking 2020-06-04 20:33:46 +01:00
MerryMage
bcde135c23 emit_x64_crc32: Improve 64-bit PCLMULQDQ implementation of EmitCRC32ISO
Reduce number of PCLMULQDQs to 3
2020-06-04 19:23:51 +01:00
MerryMage
0f9c70ff42 emit_x64_crc32: Improve PCLMULQDQ implementation of EmitCRC32ISO
Remove use of pshufd
2020-06-03 18:55:58 +01:00
MerryMage
fa6aee434e emit_x64_crc32: PCLMULQDQ implementation of EmitCRC32ISO 2020-06-03 11:16:53 +01:00
MerryMage
b47adaee1d emit_x64_vector: SSSE3 implementation of EmitVectorExtract 2020-06-01 15:41:36 +01:00
MerryMage
f3845cea9a A32: Implement ASIMD VQSUB instruction 2020-05-30 18:19:17 +01:00
MerryMage
16ff880f8f A32: Implement ASIMD VQADD 2020-05-30 16:09:37 +01:00
MerryMage
174fbb74c5 simd_three_same: Use VectorSaturated{Signed,Unsigned}{Add,Sub} in SaturatingArithmeticOperation 2020-05-30 15:55:32 +01:00
MerryMage
4e90754873 IR: Implement VectorSaturated{Signed,Unsigned}{Add,Sub} 2020-05-30 15:55:32 +01:00
MerryMage
3a50d444dc A32: Implement ASIMD VHSUB 2020-05-28 22:29:00 +01:00
MerryMage
205e6c5a56 A32: Implement ASIMD VRHADD 2020-05-28 22:29:00 +01:00
MerryMage
946eb03a3b A32: Implement ASIMD VHADD 2020-05-28 22:29:00 +01:00
MerryMage
f8062345bb asimd_two_regs_misc: Use {Get,Set}Vector 2020-05-28 21:05:30 +01:00
MerryMage
11cec1e3b6 asimd_three_same: Use {Get,Set}Vector 2020-05-28 21:05:16 +01:00
MerryMage
7d0b16de32 asimd_one_reg_modified_immediate: Use {Get,Set}Vector 2020-05-28 20:40:26 +01:00
MerryMage
cae857b8c8 verification_pass: Have an appropriate assertion message 2020-05-28 20:40:11 +01:00
MerryMage
ebddf6cca0 basic_block: Allow printing of invalid instruction pointers 2020-05-28 20:39:50 +01:00
MerryMage
07108246cf A32/IR: Add SetVector and GetVector 2020-05-28 20:39:19 +01:00
MerryMage
93c289b54f Use tsl::robin_map and tsl::robin_set
Replace std::unordered_map and std::unordered_set with the above.
Better performance profile.
2020-05-26 20:51:48 +01:00
Lioncash
c4a4bdd7de frontend: Relocate ExtReg handling to types.h
Same behavior, but deduplicates the code being placed across several
files
2020-05-24 23:55:47 +01:00
Lioncash
1900df5340 frontend: Relocate advanced SIMD expansion to a common file
Deduplicates code a little bit.
2020-05-24 23:55:47 +01:00
Lioncash
fc112e61f2 A32: Implement ASIMD modified immediate functions
Implements VBIC, VMOV, VMVN, and VORR modified immediate instructions.
2020-05-24 23:55:47 +01:00
Lioncash
659d78c9c4 A32: Implement ASIMD VSWP
A trivial one to implement, this just swaps the contents of two
registers in place.
2020-05-22 19:43:24 +01:00
MerryMage
d0075f4ea6 print_info: Use LLVM to disassemble A32 2020-05-17 22:30:46 +01:00
MerryMage
c59a127e86 opcodes: Switch from std::map to std::array
Optimization.
2020-05-17 17:01:39 +01:00
MerryMage
d0b45f6150 A32: Implement ARMv8 VST{1-4} (multiple) 2020-05-17 17:01:39 +01:00
Lioncash
eb332b3836 asimd_three_same: Unify BitwiseInstructionWithDst with BitwiseInstruction
Now that all bitwise instructions are implemented, we can unify all of
them together using if constexpr.
2020-05-16 20:22:12 +01:00
Lioncash
f42b3ad4a0 A32: Implement ASIMD VBIF (register) 2020-05-16 20:22:12 +01:00
Lioncash
ee9a81dcba A32: Implement ASIMD VBIT (register) 2020-05-16 20:22:12 +01:00
Lioncash
d624059ead A32: Implement ASIMD VBSL (register) 2020-05-16 20:22:12 +01:00
Lioncash
66663cf8e7 asimd_three_same: Collapse all bitwise implementations into a single code path
Less code and results in only writing the parts that matter once.
2020-05-16 20:22:12 +01:00
Lioncash
4b5e3437cf A32: Implement ASIMD VEOR (register) 2020-05-16 20:22:12 +01:00
Lioncash
67b284f6fa A32: Implement ASIMD VORN (register) 2020-05-16 20:22:12 +01:00
Lioncash
1fdd90ca2a A32: Implement ASIMD VORR (register) 2020-05-16 20:22:12 +01:00
Lioncash
9b93a9de46 a32_jitstate: Remove obsoleted debug assert 2020-05-16 20:22:12 +01:00
Lioncash
64fa804dd4 A32: Implement ASIMD VBIC (register) 2020-05-16 20:22:12 +01:00
Lioncash
0441ab81a1 A32: Implement ASIMD VAND (register) 2020-05-16 20:22:12 +01:00
Lioncash
1b25e867ae asimd_load_store_structures: Simplify ToExtRegD()
ExtReg has a supplied operator+, so we can make use of that instead.
2020-05-16 11:27:22 -04:00
MerryMage
2169653c50 a64_emit_x64: Invalid regalloc code for EmitA64ExclusiveReadMemory128
Attempted to allocate args[0] after end of allocation scope
2020-05-16 14:11:23 +01:00
MerryMage
1a0bc5ba91 A32/ASIMD: ARMv8: Implement VLD{1-4} (multiple) 2020-05-16 14:11:23 +01:00
MerryMage
e7f1a0d408 A32: ARMv8: Implement LDA{,EX}{,B,D,H} and STL{,EX}{,B,D,H} 2020-05-15 21:07:36 +01:00
Lioncash
af3b65b135 decoder_detail: Mark GetMaskAndExpect() as constexpr
Elides quite a bit of code at runtime when constructing the decoding
tables.
2020-05-11 08:29:06 +01:00
MerryMage
59db2c191a VFPv3: Implement VMOV (immediate) 2020-05-10 15:09:37 +01:00
MerryMage
3c86d58064 VFPv4: Implement VCVTB, VCVTT 2020-05-10 14:45:18 +01:00
MerryMage
010fab9a0e VFPv4: Implement VFMA, VFMS 2020-05-10 14:20:11 +01:00
MerryMage
8e97b10acb VFPv4: Implement VFNMS, VFNMA 2020-05-10 14:14:03 +01:00
MerryMage
6df660c889 fuzz_arm: Ensure all instructions are fuzzed
* VFP instructions were not getting fuzzed due to matching coprocessor instructions (as invalid instructions)
* Fix VPOP writeback for doubles when (imm8 & 1) == 1
* Do not accidentally fuzz unimplemented unconditional instructions
2020-05-10 13:57:39 +01:00
MerryMage
9a38c7324f A32: Add decoders for remaining v7 instructions 2020-05-10 10:50:34 +01:00
MerryMage
8b3bc92bce backend/x64: Reduce conversions required for cpsr_nzcv
The guest program often accesses the NZCV flags directly much less
often than we need to use them for jumps and other such uses.

Therefore, we store our flags in cpsr_nzcv in a x64-friendly format.

This allows for a reduction in conditional jump related code.
2020-05-06 22:38:06 +01:00
Fernando Sahmkow
d7abae1e31 A64: Implement Exceptional Exit. 2020-05-03 01:40:37 +01:00
Fernando Sahmkow
41521ed856 User Config: Add option to specify wall clock CNTPCT. 2020-05-03 01:40:37 +01:00
Fernando Sahmkow
97b9d3e058 Exclusive Monitor: Rework exclusive monitor interface. 2020-05-03 01:40:37 +01:00
Fernando Sahmkow
b5d8b24a3c Exclusive Monitor: Allow clearing a single processor. 2020-05-03 01:40:36 +01:00
Fernando Sahmkow
2068658a82 A64 Interface: Allow changing processor id.
This commit allows the JIT to be used per guest thread and change it's
core when the thread is migrated.
2020-05-03 01:40:36 +01:00
MerryMage
24229ab899 constant_propagation_pass: Don't fold add if we nee flags
Results in incorrect flags
2020-04-29 15:33:12 +01:00
MerryMage
e7166e8ba7 constant_propagation_pass: Fold add and sub 2020-04-29 14:16:17 +01:00
MerryMage
dca983803a translate_arm: ConditionPassed: Some instructions emit no microinstructions 2020-04-24 13:12:13 +01:00
MerryMage
94d0d33e02 Fix single stepping for certain instructions
Several issues:
1. Several terminal instructions did not stop at the end of a single-step block
2. x64 backend for the A32 frontend sometimes polluted upper_location_descriptor with the single-stepping flag

We also introduce the enable_optimizations parameter to the A32 frontend.
2020-04-24 11:44:38 +01:00
MerryMage
c9dec5da8c Squashed 'externals/fmt/' changes from 9e554999c..9bdd1596c
9bdd1596c Update version
d151562bd Fix punctuation in changelog
346500e70 Fix gcc version check
a434a8f77 Update changelog
9eb47d951 Fix markup
51c58a56b Bump version
3fc33f627 Update changelog
2e32db5b9 Update changelog
c1ce6e01f Update changelog
1c3c80dc1 Update changelog
d1d653d89 Implement the L specifier
73c843748 Follow naming conventions
e588b02b1 Fix posix-mock-test
1a62711d0 Reduce binary size
5b0288158 Merge branch 'master' of github.com:fmtlib/fmt
a133187a8 Update changelog
80ce222ca Fix wide print overload (#1609)
770a94ede Use FMT_THROW macro where applicable
2864e8432 Update readme and add compatibility option
21a295c27 Undo comment change
96c68afe6 Fix -Wsign-conversion warnings
664dd88e3 Enable FMT_STRING() use with types other than string literals
69779b4ed Fix handling of small precision in general format
01a172c96 Add .vs to .gitignore
08ca40ea9 Detect /utf-8 in MSVC
dd97f4920 Improve exception safety in dynamic_format_arg_store
295116948 Move FMT_USE_FLOAT and friends to fmt/format.h
d3e668418 Allow disabling floating point support (#1590)
52d0e1bbe Don't use properties when setting FMT_LIB_NAME
5d32ccfc3 Add back missing OUTPUT_NAME in target properties. (#1598)
3cf619de5 Simplify dynamic_format_arg_store
2559983e7 Color formatting fixed for wide strings (fixes issue #1594) (#1596)
026f99178 Simplify dynamic store
9f70fc3e7 Minor tweaks for dynamic_format_arg_store
6012dc9ab Dynamic arguments storage. Implementation of enhancement from issue #1170. (#1584)
85050aa2e Ability to join elements of std::initializer_list was added
ff486a72a Allow leading zeros in precision (#1579)
678341275 Deprecate fmt::char8_t
6f01b6ebb Fix a typo in CMake config: STRINGS -> STRING
61c5a5160 Fix handling of empty tuples (#1588)
02bfd8a9a Add FMT_HAS_CPP14_ATTRIBUTE / FMT_HAS_CPP17_ATTRIBUTE to test for language-specific attributes.
3c24052cf Workaround 'cannot call member function without object' error on gcc 4.9
f72a905eb Fix handling of volatile enums
941d5e147 Workaround broken fallthrough attribute in the PGI compiler (#1583)
ee2b828b9 Tweak a comment
5bb885665 Workaround for broken [[deprecated]] in PGI compiler (#1581)
1c0c59d4a Fix empty debug postfix
b1adaa988 Remove gcc 4.4 workaround
48e8d0ebe set_doc -> set_verbose
ce0097915 Cleanup CMake config
db4a6cfbf is_static_compiled_format -> is_compiled_format
29a1ea795 Fix clang -Wdisabled-macro-expansion warning from FMT_STRING_IMPL.
8a06ca84c Fix ambiguous overloads of format & format_to
153f753bd Deprecate undocumented _u suffix
eafd07986 Improve width computation
0c6919ec7 Make FMT_DEBUG_POSTFIX a cache variable (#1566)
197a5c372 Apply clang-format
68742e1d8 Fix clang -Wsign-conversion warning in grisu_count_digits. (#1573)
1e8493196 Make compile-time checks in format_to handle references
58e6c84f5 Fix simple -Wsign-conversion cases. (#1571)
75a4525e5 Move FMT_CLANG_VERSION definition to core.h (#1568)
6ccb2e241 Add FMT_NORETURN to assert_fail prototype. (#1569)
bed134a4a Tentative fix for default template param in friend error
b2d3a86ec Make FMT_ASSERT work in constexpr on clang 4.0.1
13d82e32b Don't use internal GTest API
2161a73f2 Fix FMT_FORMAT_AS const specifier position (#1554)
e00997b00 improved use of find (#1560)
0415cf235 add const begin and end overload to buffer (#1553)
3bafd0749 Fix to_string docs
f733882b5 Remove misleading FMT_USE_WINDOWS_H
dc22360c3 Workaround broken UDL templates in GCC < 6.4
1f1b50707 Make formatter override implicit conversion to a C string
24924128e Fix a link error in gcc8 (#1548)
c54cd7180 only modify CMAKE_RUNTIME_OUTPUT_DIRECTORY if it is not already set
43e9b29e5 Only use compiler features if available
b55ea5870 string_view::char_type -> value_type (#1539)
4098970db Update README.rst
314e15001 Fix symbol visibility on Linux when compiling with -fvisibility=hidden (#1535)
f499b393d Apply coding conventions
6c30f4144 Configure fmt.pc library name correctly.
1acb73f97 Fix formatting std::chrono::duration types to wide strings (#1533)
09a13244c Disallow passing non-string-literals to FMT_STRING
419db8baa Fix length computation of constexpr C strings
9fc4161f5 fix interal compiler error when building with mingw
25d6916b3 Fix so can work without locale defined
0b2eb6501 Add locale example
fd1cabe46 Workaround a bogus MSVC warning
a844d7ab8 Add namespaces
47d396809 Add more examples
7800173eb Update fill docs
b4218aa0f Test invalid fill
8a3a8177d Bump version
e5f2f8ce7 Add variable-width fill support (#1109)
75765bfad Avoid unnecessary unsigned overflows (#1515)
9bd9738da Remove static and simplify names
bd5f903f2 Add a locale example
06e437fd9 Move docs to the proper place
1bd4f54fa update format
11cc2903e re-fix url link
b124e3e8e fix url link
ffd5f3469 Correct display format
0f0e5ddf5 Add vcpkg installation instructions
1f110702a Remove redundant braces
4ccbe4b5f Avoid namespace clash for fmt
40638a75b Use C++11 compatible std::is_same operations
c8dd9cc99 Use type_identity to block unnecessary template argument deduction (thanks Tim Song)
4bbe57ceb Work-around for nvcc
55b613005 Use C++11-compatible operations
ae3ea156e Fix for older versions of intel compiler
77165fdf8 Use FMT_NOEXCEPT instead of noexcept directly
65ac626c5 Improve join docs
cd0b3f969 check if _SECURE_SCL is defined not equal to 0
cef1e4354 Optimize grisu_gen_digits
0201c8db2 Restructure float_format
9e3f3e8cf Fix handling of output iterators in format_to_n (#1506)
aa07c5765 Move vprint_mojibake to the internal namespace
a73d89e9c Catch invalid uses of fmt::arg
cb8e7caf7 Convert 'char8_t' character sequences to 'char' sequences
b3fd0005d Suppress a bogus -Wdouble-promotion warning
7b478f9de Simplify example
c85efef31 More showpoint fixes and tests (#1498)
455a7c078 Clarify lifetime of basic_format_args
674c326d7 Update syntax.rst
061a9897f Update syntax.rst
d2d1c9c56 warning C4267: 'argument': conversion from 'size_t' to 'DWORD', possible loss of data
b6e19e595 Update apidoc
f219dcd59 Add fmt::bytes
dea7fde8b Deprecate u8string_view
5390e29d4 Enable mojibake
9f6434dcd Improve UTF-8 handling on Windows
dac9a7f99 Improve UTF-8 handling on Windows
3ca9533f3 Flatten forward
7eec036d9 Improve UTF-8 support
e6b37b4af Handle block boundaries in utf8_to_utf16
8cf4c5206 Apply clang-format
74532c23a Make type a scoped enum
b308159be Make round_direction a scoped enum
162995fed Add os.h to docs
8b41362a0 Add trailing decimal point if # is specified (#1476)
1b1c70108 trailing_zeros -> showpoint
d7e72a09e Simplify FMT_STRING_IMPL
2201890d7 Apply clang-format and update inclusion guards
6100ed4bb Eliminate NVCC NVidia compiler emits unreachable code warnings
1afe201ae Handle block boundaries in utf8_to_utf16
cd2b99032 Chore(readme): use https (#1481)
9acf89fef Mitigate MSVC issue with min/max macros (#1480)
9ea42fb26 Rename posix-test to os-test
da2569827 posix.cc -> os.cc
35959a31d Move OS-specific APIs to a separate header
ec2463c90 Implement utf8_to_utf16 using utf8_decode
0012917f6 Add a UTF-8 decoder
9e450911f Give an error on precision overflow
068d20bc3 Avoid shadowing warnings in FMT_STRING
a99fbe67b Apply a typo fix retroactively
adbed11ed Fix a typo
8ab1c5c6e Squelch MSVC warning exporting subclasses of runtime_error (fix for PR #1433) (#1470)
a770009fc Improve error reporting
598e6042d warning C4468: 'fallthrough': attribute must be followed by a case label or a default label
e09814dc9 Merge branch 'master' of github.com:fmtlib/fmt
b272fb360 Extend FMT_FALLTHROUGH compatibily to gcc and clang pre-C++17 (#1469)
f94b7364b Update version
7abec071b Update changelog
b7eb8c892 Prepare for the next release
ae7c50185 Reintroduce sprintf_format for ABI compatibility
9f2e7edae Fix handling of types convertible to std::string_view
fd52de0c6 Add FMT_CUDA_TEST CMake option to enable cuda-test
f675cb887 Remove redundant cast
73a16b827 Fix handling of int128_t in format-impl-test (#1461)
72879db40 Clean-up sign-conversion warnings in public headers
d3aa0c3a2 Clean-up sign-conversion warnings in test code
31de9a1b8 Revert "Clean-up sign-conversion warnings in test code"
227bfe62d Clean-up sign-conversion warnings in test code
95dfdc6cc Update README.rst
5916ff63c Update README.rst
1ab80aa92 Fix handling of types with custom formatters that are convertible to std::string_view
4f4d87661 Remove '%' from the docs
f443bd3ba Ditch decimal_formatter (#1363)
1219b65f2 Relax fallthrough attribute detection
071794ec6 Update version
d22e4ad85 Remove trailing comma
983806b0c Update changelog
02af5beb8 Bump version and update changelog
123e7f7fc Revert #1433 because of build failures (#1450)
168460f02 Remove TYPES
a64f60c84 Remove unneeded FMT_API.
1a599117d Export assert_fail with FMT_API. This fixes dll build.
b160123e3 Update ChangeLog.rst
598158856 Fix compilation with MinGW
8bbe76af3 Add a missing decimal point in exponent notation with trailing zeros
4ca6821e8 Update version
7111a1eb9 Bump version
ae00bbdc9 Update changelog
e71e07d9f Update changlog
0184df702 Update docs
1cbae6e9b Put vprint declarations in one place
159f89e2b Fixing installation directory of '*.dll' files on Windows
4b120b68a Clean up includes
186b225d9 Update changlog
4cbf4888e Update changelog
e31f2b3d0 Update changelog
62da1db62 Avoid wchar_t instantiations
3bc28fcc6 Squelch MSVC warning exporting subclasses of runtime_error
3c05fa46c Update changelog
ba6e330fd digits -> num_bits
6037b3cae Fix dangling else problem in FMT_ASSERT
fafb03fa6 Fix handling of fallback_uintptr
2f9acd183 Remove dependency on <cassert>
aaf829bfb Fix fallback pointer formatting on big endian, take 2
b994a0ab1 Fix handling of missing fraction in snprintf_float
bb205d940 Fix fallback pointer formatting on big endian
ef7369ce9 Update docs
40e4c227d Update changelog
ea54b21e7 Remove invalid noexcept annotation
9cbf4b087 Fix -Wconversion warnings
1200a34e1 Update changelog
9c7e2a6c6 Add missing newline
34e921f6f Update docs
c3be0f593 Refactor floating-point formatting
c68703c9f float_spec -> float_specs
9a21728b0 Remove gen_digits_params
3de36e934 Enable -Wswitch-enum in CI
4afb39bc2 Update README.rst
7ffa62db1 Fix precision handling in snprintf_float
0d07db123 Fix handling of streamable and convertible to string types
d19ed6716 Fix hexfloat buffer reallocation
99b6e928d Fix handling of types with deleted rvalue conversion to string (#1421)
57cd3f72e Update comment
111fc127f Remove fp::operator-
6003ec3f2 Simplify Grisu implementation
8877a6772 Instantiate snprintf_float
75fff1db6 Minor cleanup
28d7191c2 Don't print trailing zero with fixed, precision=0, and showpoint (#1417)
43271ba8e Handle null terminator at the end of the buffer
63a9f3fcd fix bad oss fuzz link in the oss-fuzz badge
4cf59ce73 Integrate Grisu and sprintf digit generators
7395472dd Refactor floating-point formatting
9108b25da Merge branch 'float'
4d366c68b Merge branch 'master' of github.com:fmtlib/fmt
ded1e7679 Refactor floating point formatting
c7edd8e57 Cleanup FP formatting
75108a56f Don't print % for nan and inf
3e1f70fe0 Merge write_fp into write
125fc5e52 Update comment
6793ffc1d Update README.rst
f4fcc5fd2 Update README.rst
4de41aa65 Move basic_writer::write_fp to where it belongs
404a880bd Make parse_arg_id more readable
092d2dc7b Merge safe-duration-cast.h into chrono.h
093e55421 Remove redundant qualification
d0696b0aa warning C4456: declaration of 'num_digits' hides previous local declaration
66d7746bb Use grisu for exponent notation
e9bff7881 Don't parse % unless FMT_DEPRECATED_PERCENT is set
57b6f2966 Deprecate the fmt macro
d79493e5e Remove Grisu2
78842ce0d test: add default constructor for a const value
5420bcce2 Make % an opt-in to improve compatibility with std::format
56a2e2075 Refactor float spec parsing
ed117baa4 Replace bool with float_format and add exponential
f26446290 Move float_spec_handler to internal namespace and update asserts
7e1cb3237 Fix indentation
f67783d7e Clarify that numeric alignment is deprecated
1c6d85f7b Apply coding conventions to examples
4a1da44f9 Apply coding conventions to examples
080b6899d Tweak the docs
c01ec54fd Document and clean basic_format_parse_context
b0c2ab93f Bump version
9b7fe2a4a Don't use POSIX API on UWP
c58b7d9c2 Use overridden locale in ostream
ceff9b0b2 Tweak the docs
3dc8639f8 [docs] Added conda
dcde089b4 Improve POSIX API detection
2145a7bdc Move has_formatter into the public fmt namespace. (#1407)
52ae134f8 Remove broken CI config
0d6dd0cc6 Correct basic_string_view from string ctor
1f918159e [clang-tidy] Replace deprecated C headers
6868f888b [clang-tidy] Add missing override
87cd545a1 [clang-tidy] Replace {} with = default
12f9437e2 [clang-tidy] Use auto
bb0c8bfea [clang-tidy] Add noexcept where move is used
e6e829890 [clang-tidy] Add parentheses to macro arguments
0f0848e4f [clang-tidy] Use braced init list
a1fb5c733 [clang-tidy] Changes suffixes to uppercase
8a411c2bc [clang-tidy] Turn deleted function to public
0047dc10a Mark apidoc as rst
263cdef8a Merge branch 'master' of github.com:fmtlib/fmt
d4ca54253 Update docs
5bb7b28e1 Document members
1409dfe76 Try fix CI
f1559e1d5 Use grouping() from locale for specifier 'n'
ffd05e65e basic_parse_context -> basic_format_parse_context per standard and document
0889856d6 Fix UTF-8 truncation
d6eede9e0 Remove redundant ctor
213e09644 Workaround X11 madness (#1388)
6bfc9af8c Add double support to compile
3487f1b9c Always inline grisu_gen_digits and disable grisu2 by default
791294d17 Apply get_cached_power optimization by jk-jeon
8e700619b Simplify format_handler
58c6f8c7f Make unsigned-integer-overflow sanitizer happy (#1377)
40414b344 Don't emit trailing zeros in exponential notation (#1376)
b7a157401 Simplify grisu_writer
7aa58c30b Simplify NVCC checks
8e9bffa98 clang-format
ce4d87acd Remove obsolete comment and clang-format
21acc2af4 Fix more Visual Studio 2019 pedantic warnings (#1371)
00669427d Patch compiler error when building using nvcc
d39ebf3ff Optimize counting
6498bc6d3 Simplify grisu_writer
a967dcbe2 Improve handling of signs
8498bc97d Initialize all the things
e2ea94067 Handle assymetric boundaries
2bc5585ff Fix computing lower boundaries for smallest normalized double
bb728a572 packed_arg_bitsize -> packed_arg_bits and remove packed_arg_mask
36d1390e6 Implement round half to even
599e0aef4 Support single precision floats in grisu formatting
91f7619cc Fix Visual Studio 2019 pedantic warning C4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
c4dc6bef2 Apply clang-format
646966e97 Reduce bigint capacity
a5abe5d95 Handle negative exponent and nonnegative power
1cbc5fa6c Handle negative exponent and rename value/pow10 to numerator/denominator
f7a5748fd Partially implement (FPP)^2
0e94b931a Fix a linkage error introduced by #1360 (#1362)
5e58eb97b Implement add_compare
3a15ea3ea Rename write_double to write_fp
b87ac4d84 Distinguish float from double
a927dda9b Use words for packed constants
dd11d4584 Encode types using 5 bits
b55551f90 Implement more comparison operators
96f91428c  Add defaulted copy and move operations to format_error and system_error  (#1347)
b732f28c0 Deduplicate color vformat and vprint
a82c1dc6d use memory_buffer to make color print behave atomic #1348 (#1351)
2730e9018 Fix compile error in printf with gcc9 (#1354)
e4d6d9d7c Implement divmod
a1079e9fd Fix undefined in format-test (#1349)
b66bb6b71 Fix undefined in core-test and printf-test (#1345)
b60114533 Implement more bigint operations
c41cea8b1 Initial implementation of square
0c7650373 Fix handling of types convertible to std::string_view
057101370 Repoint one more Python 2 link to Python 3
d2c9276fc let README point to python 3 instead of 2
0fc7bd157 Fix ambiguity for types with dodgy conversions
b4f1988c4 Provide overload for `fmt::join` that handles `std::tuple`s
4b8f8fac9 Update README.rst
3b2fc033d Making CUDA test work with CMAKE_MSVC_RUNTIME_LIBRARY
ac59d9f3a workaround VS2019 Update 3 compiler bug. (#1328)
8f27ce4d8 add test for multiple compilation types
89b0c71fa fix name clash in header-only mode
f6a783ad2 fix `get`
ccc8f5db0 Disable integral operator<< (#1316)
20fdb88a1 Remove redundant and nonportable test (#1313)
f29901097 Don't use const char* overload of operator<< (#1309)
758446c80 Fix a warning (#1319) and simplify code
f7aedc5fc Fix shared build on Solaris
840a817ed add oss fuzz badge
79c923ba2 fmt.pc.in: Fix for cross compilation
5dc577c06 Update ChangeLog.rst
c6d1a94a9 Fix fallback_format (#1306)
0656045d0 Fix format overload that takes text_style (#1305)
c85ae23c7 Add max_value
b3bf66576 Implement multiplication and part of assignment from pow of 10
0887887e2 Implement left shift
ac71d853b Refactor normalize and clean up
6649b8e0c value -> bigit
56b5c192a Add a bigint stub and reenable grisu
b2f0b6e44 Tweak comment
3d9f3c163 Integrate new format string compilation
19547d514 Update index.rst
972ffd315 Update README.rst
2ed412fa3 Update README.rst
df4dcf2ec Fixed vs 2015 warning about unused variable when grisu is off
f7a4b4ab9 Make numeric alignment optional
611cf0b3c Format octal 0 as 0
58a8f2f53 Add ccache to the list of projects
1882b9687 Reduce the numer of ifdefs with an empty (u)int128_t fallback
6de0454b4 Add support for built-in __int128 when available
16e3c48bb Move definition of FMT_USE_INT128 to core.h
8ce5f680f Rename internal::is_integral and internal::is_arithmetic
2fd8f9ec8 Initial implementation of optimal compile-time formatter generation
fe642d764 Clarify use of the core API in header-only mode (#1296)
a128b5b2c Simplify format string compilation
466128de0 Remove unused code and refactor
22e98a5b6 Make compile work with user-defined types
f18a3f36a Remove string_view_metadata
7cad33563 Refactor format string compilation
e1ab6bc00 Simplify format string compilation
24a88545d Add -Werror to tests
422e7b9d7 Fix compile-time checks for user-defined types (#1292)
d1dd9d532 Document floating-point n specifier (#1291)
9a56a608e Fix warnings (#1288)
c76957565 FixedEnum -> StrongEnum and make it a regression test
200ee6f10 Fix minor clang-tidy warnings
bcd9b9331 Map not int enum to correct underlying_type (#1286)
345ba07f1 Add a CUDA test
9e2490be4 Rename precision parameter
3f75e2b69 Make buffer_range public and update custom formatting docs (#1281)
744302add Workaround broken [[deprecated]] in Intel compiler (#1273)
f5556225a Eliminate shadow variable warning
ad3c7855e Fix typos.
7512a55aa Update version
9bd2f1f9a Temporarily disable Grisu
b9815cf04 Simplify part_counter
fe00cddde Move part counter to the namespace scope
1a7d172dc which_value -> kind
006c2546f Get rid of basic_prepared_format
4ce006fb6 Simplify format string compilation
e2e557e27 Remove preparator
a5f470eb1 Test and fix compiled format_to_n and formatted_size
4070c1d80 PrepareTest -> CompileTest
f8b59251c Remove unused preparator
643aa4c8c Simplify format string compilation
ffe29a92f Get rid of internal::compile
e94d72366 Fix compiled format string version of format_to_n
a9337395a Remove unused variable
562a9f499 Remove parts_container_concept_check
b257c56e5 Fix size types
1488df339 Bump version
b918e3ff8 Fix docopt usage
23b04ca6d Update usage instructions
5d5918a74 Update usage instructions
413d97b33 Fix formatting in changelog
790fd90f4 Update changelog
c0890be77 Update changelog
5a4b24613 Update the default floating-point format docs (#1270)
45dc3486f Update license
5a353fa8c Draft license
c84d227da Update changelog
b2d4ca154 Workaround an issue with std::filesystem::path being an infinitely deep range (#1268)
2aae6b120 Fix doc for importing header only target with CMake
9f09b8eed Fix a warning
2bb8120d9 Fix a warning
c1e97392b Fix warnings
4e99e09bb Fix warnings
1607a0187 Suppress a warning
e8219952c Restrict fmt::compile to literal strings
544b53733 Update changelog
83c13a1fe Update changelog
2546dafec Update changelog
02c04b173 Update changelog
5360ab0b5 Fix iteration over named arguments (#1168)
b615eca96 Update changelog
22a42c0b0 Cleanup compile implementation
c63624ed4 Update changelog
211d31240 Don't terminate on I/O errors in report_error
ef55e74e0 Update changelog
612669d34 Update changelog
ba63ac8c1 Make format_to a non-member
3fe49163b Revert "Make format_to a non-member"
a5bd3ddb2 Make format_to a non-member
3df0ea34e Remove unnecessary overloads
436acf348 Make formatted_size & format_to_n non-members
823128049 Make format a non-member
1dfa2591b Make operator _a constexpr
6f2dd30e3 Simplify udl_formatter return type
431d0f85c Use basic_string_view in non-template UDL
ad71f5a70 Use forwarding references in UDL template
d0f2f3b81 Update usage.rst
eac2796ce Fix locale detection
ee3625746 Internalize format_part
bbf0bada3 Simplify compile
3730b4f03 Cleanup compile implementation
25ff2efc0 Update changelog
9393fe26f prepare -> compile
b48ffc14a Update changelog
3268531bc Workaround a broken C locale on Windows
8bd59ec93 Use fputws for outputting wide strings
1235f0a24 Fix typo in usage.rst
4fb73d114 Update README.rst
f9ceefb0f Fix a warning and is_negative usage
6bcc3fd21 Fix warnings
6a497e1d0 Fix warnings
e9b9b0aef clang-format
ec24342b2 Fix more warnings
230b24944 Fix sign conversion warnings
cadd92d69 Fix #1232.
41076d1de Use `FMT_THROW` in fmt/color.h.
d561cb47a Opt-in macro to enforce use of compile-time format strings
699fe8e71 Remove const qualification in compile-time checks
da2d33f1f Update changelog
af4734fd1 Fix warnings
a3a74672a Update signatures
c11e68305 Update signatures
dd8cc8b0b Disallow passing views as lvalues
f6f0415b8 typedef -> using
c92dc3746 typedef -> using
e3f20d3e1 Remove gcc 4.4 workaround and use proper alias templates (#940)
b43881232 Clean up is_output_iterator
bc15e3700 typedef -> using
cf5ebf205 Cleanup
9c20e72de Cleanup
79209598f core_format_specs -> sprintf_specs
5488d0b53 spec -> specs
e4f84ee1c Refactor format_specs for #1109 and #940
8e0dcd20b Remove old deprecated functions
1d3e3d8c0 Make the 'n' format specifier work with grisu disabled
bc628f8d4 Fix EXPECT_DEBUG_DEATH_IF_SUPPORTED (#1214)
edd13fcc1 Fix small number rounding with fixed precision in grisu
6a031347e Remove unnecessary qualification
bc14c6ee2 Use the decimal point from locale
476f25cd8 Remove ancient gcc workaround
c9d5a08ed Add the 'n' float format specifier
f487ddbdf thousands_sep -> add_thousands_sep
d8fd1699b Make data names follow naming conventions
c286ffc88 int_traits -> uint32_or_64_t
1289782f0 Get rid of add_thousands_sep
2249f5571 Simplify thousands separator handling and cleanup
e76446958 Cleanup and remove deprecated visit
de37de912 Remove deprecated color API
df1a3a141 Remove null_terminating_iterator
78dec87a4 typedef -> using
ded0a3bb3 Internalize undocumented basic_writer
83174f2a1 Refactor ranges
c2e84ee9c Fix FormatTest.StrError on Solaris
2711cb167 Apply clang format and other minor formatting tweaks
ab0ba8a9d Don't emit decimal point if there are no trailing digits (#1210)
bd3fd3bfd clang-format
260c11590 Fix formatting of 0.0 with  (#1210)
9d97201ed add oss-fuzz support
037b84f21 Fix warnings
e37ee419c Export exceptions destructors
e3488fcae Fix Warning
d5d586561 Move strtod_l check to CMake since it's very system-specific
29ef7d31e Fix a warning
af83192d7 Fix warnings
6952732b6 Remove misplaced checks
b97e5d8c2 Remove deprecated fmt/time.h
572b077db Fix warnings
72e519a4b Add formatter<std::string_view>
635e01fe7 Update <format> to the current wording
0e72c9804 Make undocumented output_range internal
f13906f40 back_insert_range<internal::buffer> -> buffer_range
22ddd4b98 Simplify feature checks
bb827341e Add FMT_FUNC where necessary
64c54703d Cleanup
1c3197b8d Fix warnings
fd2292f13 Cleanup checked iterators
4912cff65 Fix handling of mapped types in compile checks (#1200)
463984383 Cleanup
e29708ee5 uintptr -> fallback_uintptr to avoid confusion with uintptr_t
f03a6c532 Cleanup
6c3d584e6 Simplify warning suppression
12f468388 Make iterator_t an alias template
874d6727e Remove workarounds for pre-C++11 compilers
a9940192f Fix warnings
34b541835 Fix warnings
cbbee1b38 Fix handling of hexfloat
92a44db11 Fix warnings
d05d42751 Remove old msvc workaround from arg_formatter_base and fix warning
d32fe0f3f Fix hadling of nullptr
e5422db4b Fix handling of uintptr_t
9d7b64a25 More cleanup
5e293bd97 Remove unnecessary qualification
4a502d980 Add remove_reference_t
d384cdd39 Make is_contiguous_back_insert_iterator internal
32544b610 More cleanup
39f522a13 get_types -> encode_types
d7d2bebf9 Remove redundant typename
9427f15be Fixed issue with formatting to an array of chars
87fbc6f75 get_type -> mapped_type_constant
a48daa60e Remove remove_volatile
afdbbac75 Cleanup
e33fe14f5 Simplify visit
e895da2ec Clean up value
e1a67b528 Remove TODO
a291f07e1 Clean up argument mapping
5d9100fa2 Move char8_t to fmt/core.h
4faadff0a Add preliminary user-defined type support
5d4873359 Clean up value construction
0f0b42861 Cleanup
209db68b2 Get rid of FMT_CONSTEXPR11
cb4c59495 Deprecate convert_to_int
40779749a is_formattable -> has_formatter
b3cf8613b Make formatter specializations override implicit conversions
3fdba0492 Reduce the number of nontrivial formatter instantiations
f5f3ffac5 Merge string make_value overloads
a38b99a18 Fix a regression in named argument handling introduced by prepare
aa31028b2 char_t_impl -> char_t
0787d6974 Simplify SFINAE
bae00aa8d Simplify is_string
388bb389e integral_constant -> bool_constant
7e39c7e6f Put stringy stuff together
3eff8f94d Update docs
469a4bbd3 Use enable_if_t
d2ee5f240 Merge tests
c264e641e Add conditional_t for pre-C++14
4aa0dc578 Fix docs
064ce6b6c Specialize is_char for character types
7893d8539 Clarify why we cannot have nice things
5bafcb437 Add comments about things broken in MSVC
153024255 Fix signature in the docs
eddb84cfc Fix formatting of exotic characters
7e42c65bb Document a more useful to_string_view overload
1e6e87cb7 Update docs
0c6a6e025 Get rid of the FILE* hack and reword apidocs
1653244c6 Fix compilation issue on VS2019 (#1186) (#1191)
d54e64b3c Make buffer_context an alias template
ec6651087 Remove old is_constructible workarounds and replace typedefs with using
4d4b8c238 FMT_CHAR -> char_t
56d2b9110 Install git
89d6c959b Fix cmake link
76ef39fc5 Update vagrant config
af2c73772 Implement parsing of string_views
9df0e2d1f Implement string parsing
5b7bbf885 Revert "FMT_CHAR -> char_t"
4c650057a FMT_CHAR -> char_t
2833c76f2 Move char_t to template param to reduce symbol size
67feef558 Make enable_if_t more std-like and move to fmt namespace
78daa50ff Fix handling of chrono durations with minimal signed rep
87e4ea290 Fix a warning
c56b17029 Add msvc2019 to CI
c929684e3 inlines count_code_points(basic_string_view<char8_t)
f57227a14 FMT_ENABLE_IF -> enable_if_t
634f707f2 Simplify char_t and remove msvc2013 from CI
406e632bd result_of -> invoke_result_t
49f78a427 Demacrify
637bf3c6d Workaround a bug in clang-format
8302c2f33 fmt::internal::declval -> std::declval
d07cc2026 FMT_EXPLICIT -> explicit, FMT_NULL -> nullptr
4a7966c77 Drop gcc 4.4 from CI
9b3c24b99 One weird trick to simplify docs; doxygen hates it
30bce6c14 Fix a few chrono formatting corner cases (#1178)
e5512c5d5 Use static_assert instead of SFINAE in arg(...)
afc571aed Document join and relax its compiler requirements
ad360a62b add gcc 8 c++17 release build
3cf12d7b1 add gcc 8 c++17 build
bb254d146 Disable std-format-test by default
291ba837f Remove wrong compile-time checks from printf (#1173)
01c631af9 Implement unsigned and long long parsing
4fcd4a4bd Reuse parse_format_string in scan
2346779d6 More documentation fixes
afc1a74a6 Minor documentation fixes
ad0eade47 Remove MSVC nonsense
28c187bcd Capitalize titles
91bb3aaf0 fmtlib.net -> fmt.dev
5e7bdf1b9 Clean up vagrant config
570453f27 Add a vagrant config for testing gcc 4.4
ef6282fc4 Fix gcc 4.4 build
e3e470bb6 Remove deprecated format_decimal
67179dbc2 Remove deprecated format_decimal
a5ffa735d Fix gcc 4.4 build
5ee080463 Experiment with scan API
25b72fc4c Move <format> to tests not to confuse users
d179ec5f8 Simplify Grisu
2a9e8b52d Fix advance_to() and begin() using iterator (#1159)
2c77562b1 Fix ambiguous formatter specialization in fmt/ranges.h (#1123)
98b377529 Add support for exotic string_view iterators (#1156)
b488df6cf Fix Grisu3 stopping conditions
f4dfd6e30 Suppress all clang-target-msvc test warning in CMake and other misc fixes (#1151)
a6e8ed15c Disable UDL templates on GCC 9 by default (#1148)
de5da5091 Fix formatting of extreme durations (#1154)
ea2976e6d Move internal::uintptr_t test to format-impl-test (#1152)
77d6036cd Fix unexpected trailing decimal point (#1153)
ccc318e80 Update README.rst
4c8efd694 Update README.rst
d22d11b5f Update README.rst
e9bab6d02 Improve handling of large durations
f52c09f92 Fix format_to_n docs in 5.1.0
118d8bccc Fix compilation error under MSVC 19.21 (#1140)
6828d549e Add FMT_ENABLE_IF_T
3fd134be0  Move test_count_digits to format-impl-test and disable gtest warnings (#1147)
ca7c1f89d Fixed a compile error under MSVC.
ca978b3d2 Fix handling of nan durations
c1d430e61 Improve handling of negative durations
38a85502e Use the same rep type for seconds to prevent overflow
241414028 Eliminate shadowed variable warnings from gcc-7.2
29c10fbf6 Fix DLL visibility of explicit instantiation "declaration" of internal::basic_data<void> in header format.h and the explicit instantiation "definition" in format.cc (#1134)
4a4d72f91 Fix handling of invalid string in chrono formatting
b3cc9c056 Merge remote-tracking branch 'upstream/master' into invalidcolons
2e3352fd0 provoke assertion
4c721e3a2 Fix chrono formatting with invalid argument id (#1132)
8d8ea21c6 Partially implement Grisu3
40a797564 Remove trailing zeros
cb46397df Fix typo
134904c88 Re-enabled constexpr tests
bd516e342 Convert negative precision to zero in printf (#1127)
5efb24dd2 Add specialization test
946498cfb Fix handling of zero precision
6b2086391 fmt::ptr: support unique_ptr and shared_ptr.
d306585a3 Don't inject internal names into std (#1120)
544b92793 Don't detect C compiler
dc94010fa Remove char_traits (#1117)
397e8dd9d clang-format
2b415b7af Restructure printf_arg_formatter to make it customizable
5d755d0a4 Fix handling of volatile char (#1115)
bade46aae Optimize grisu using uint128_t
41fbaeb3b Add <format> test
8bc0adb9b Get rid of obsolete cmake stuff
1763d0e7a Add MongoDB to "Projects using this library"
f569c1ba2 doc fix: time -> chrono
ccd70f59e Workaround bogus unreachable warnings in MSVC
a4969ebe0 Link to fmt(...) docs from index
a6ad29aa3 Update <format>
52eb3fe27 Update <format>
09e2ac5e4 Update <format>
df4ea0c76 Update <format>
718f60acc Fix shadowing warning (#1105) and clang format
aeb5ad3ce Enable [[noreturn]] some.
280839548 basic_buffer -> buffer
6e37c2003 Use compile features cxx_auto_type cxx_variadic_templates instead of cxx_std_11
3de3d76a3 Add compile features for cmake 3.8+
07d5a86a7 Fix warnings
ab1474ef6 Workaround segfault in doxygen and apply clang-format
918ab77ba Try fixing doc build
735b1fadc Only update key on Linux
3c531b735 Fix expired key error when installing with apt
f10a7e2e4 Test exotic pointer formatting
bd8177177 Add support for platforms without uintptr_t
0302927f5 Optimize pointer formatting
bb6842ba3 Simplify to_string
b23c8633f Detect presence of uintptr_t
b588d7f35 Fix a couple of deprecated things.
018d8b57f Remove broken snprintf
1987db663 clang-format
a6d1ad741 handle fwrite results #1098
e979c782d Extend basic_writer with write() method for doubles with optional format_specs argument
9e1531c1e install pkg-config file into libdir
0a66e4cbb Update README.rst
91acfe685 Fix UBSAN warning
b7e6bf967 clang format
da0ea4161 Make compile-time checks work with fallback formatter (#1088)
7ad3015f5 Added missing typename to FMT_STRING. (#1089)
f0b572da0 Update wording test
6d416cf67 Forward declare is_string<FILE*> specializations
b742f622a Create PR template to help agree to the licensing terms (#1083)
02a6f16b5 Update LICENSE.rst
294fd7df9 Remove isinf workaround
17c6900f8 Update docs
0faa968cc Make floating-point formatting locale-independent
bc784d362 Remove isnan workaround
53379dfd0 Don't set CMAKE_BUILD_TYPE if fmt is a subproject (#1081)
76d326a2a Enable grisu for general format
c21c6b8c4 Move enable_if to template params
ec645ca26 Update readme and doxygen config
ae0b0dab9 Remove obsolete TODO
5466a5b41 Document inherited members
9b392a683 Update readme
0fa65cf32 Add example
fdd0149e7 Update readme
e19a95b27 Update readme
ef3927497 Update readme
a7f68dcc0 Update readme
1428b3429 Update readme
97619e27a More fixed precision tests
dd6cc0e6a Merge time-test into chrono-test
a939c7595 Merge fmt/time.h into fmt/chrono.h
17e4b5392 Make chrono formatting work without exceptions (#1062)
a82b3680d More tests and fixed precision fixes
287342dab cmake: default FMT_PKGCONFIG_DIR to a relative path
e28429ee7 Prevent overflow with zero precision
49bbf3c87 Simplify shadowing warning fix
5e5506f83 Update readme
e06523361 Visual Studio 2017: warning C4456: declaration of 'result' hides previous local declaration
ebec00138 Reword licensing part
8daa3c683 Clarify contribution licensing
0d418a8d5 Update and rename CONTRIBUTING.rst to CONTRIBUTING.md
4c66dad8c Refactor digit generation
b1f7cca89 stop -> handler and swap args
f90d33ca1 error_ulp -> error
78c755dc4 Update readme
f23017015 Update readme
ced8aa8c9 Update readme
77d54251f Update benchmark results
1632f72cb Test get_round_direction
8129b9bc4 Test that the library can be compiled witout locales
835087dd0 Add color-test
4523053e6 Fix typos.
8407f4cb2 Round close to zero fixed precision
49d244c06 Don't emit more than precision digits (#1072)
3466d9c84 Don't override fixed formatting depending on exponent (#1072)
93d22dec3 Implement rounding up and clean up FP formatting
d560ddac2 Temporarily disable Grisu for fixed formatting
2d981bb13 Add documentation for '%' format type. (#1071)
d8434baa0 Declare the size of RESET_COLOR.
8f7780a4f Correct comment
2e526a664 Fix handling of output iterator in ranges
79b79f329 Add support for '%' type to output floating point values as a percentage.
287eaab3b Increment output iterator in basic_writer::write for character types (#1056)
a97757736 Use grisu for fixed precision
327d4b6e9 Fixes for some pedantic warnings (#1054)
8af651be3 Implement fixed precision
187bd1b8b Clarify lifetimes of named_arg parameters (#1051)
4e5694fd0 Update arg signature
82c24edcf Workaround a bogus Qt Creator warning
ed138d794 test: assert-test: fix typo in else-branch of EXPECT_DEBUG_DEATH_IF_SUPPORTED
0476a51cb Add Sublime syntax (#1037)
c5aad69f2 Restore deprecated begin()
5b0006476 Make stopping condition configurable in grisu
a44238f2e Improve grisu
83808076e Minor cleanup
9660ea1bf Simplify format string checks
4a9d67636 Gradle 4.10 >> Gradle 5.2
f041f128f Minor cleanup
e4572e5de Update std implementation
442fa1bd4 Decouple format and parse contexts
744e66bb0 Deprecate format_context::parse_context()
d231d68a8 Fix handling of custom context
01f34d0b0 Fix library deprecation warning
9a0a24f90 Test is_streamable with overloaded comma operators
430e6ac9b Protect against overloaded comma operators in decltype
467520e7a Remove unused macro
5a314a528 Eliminate extra copy on floating-point formatting
9989e7f4e Update benchmark results
31510cb43 Fix warnings from Visual Studio
61c9b563c Replace 'std::result_of' by 'std::invoke_result' where possible (#1025)
864b9a220 Correct the comment
153833683 Remove unnecessary checks
22de5a755 Fix warnings from Travis
355eb6d29 Enable grisu for shortest roundtrip (default) formatting
b8d34e0db Fix rounding
e61cac687 Minor grisu improvements
7fbbfed8c Fix warnings caused by usage of deprecated functionality
c3268f4e5 Remove use cases of deprecated functionality
34951f199 Replace comments regarding deprecation with attributes
3f52336e6 Simplify formatter selection
7ca8fc3b1 Fix a bogus warning
5289dd600 Test formatting of special numbers
bf6529f2c Update docs
070061224 Implement 'chrono' formatting specifiers '%Q' and '%q'
06c005b7b Clarify that compile-time checks don't support named arguments
4f6fda558 Add a grisu test stub
9f70b034e Implement precision for floating-point durations.
7cdb1e5e4 Workaround broken is_default_constructible in MSVC
5f1ceebc7 Make formatter<T> override ostream<< for templates (#952)
1b11b000c Update readme
83f052930 Add code from p0645
fdd8e333c Fix compilation with locales disabled (#1011)
dad1eec84 Workaround unimplemented T... on gcc 4.6.x (#1008)
b0cde860a Implement 'snprintf(OutputIt it, size_t n, const S &format, const Args & ... args)' (#917)
e05dfb088 Fix compile errors due to name-hiding and an unused function argument.
dde095fab Revert "Reorder defines"
4a059914a Reorder defines
58b6f8db4 Format the code using clang-format
9a777b9e1 Implemented fmt::prepare()
da55e96f5 Install ninja to fix android build
dc8f8ce4c Fix handling of dynamic width in chrono formatter
f5cc77cea Get rid of 'null_terminating_iterator' in printf.h (#980)
39623a740 Replaced usage of gtest's internal scoped_ptr with unique_ptr.
ae1de3a8d Add support for using text_style in format and vformat directly (#993) * Closes #993
1b8a216dd Improve docs
b3ad759a0 Bump version and correct changelog

git-subtree-dir: externals/fmt
git-subtree-split: 9bdd1596cef1b57b9556f8bef32dc4a32322ef3e
2020-04-23 21:03:34 +01:00
MerryMage
69061d87fa exception_handler_windows: Ignore irrelevant exceptions 2020-04-23 20:58:24 +01:00
MerryMage
5c0bb5cc63 Remove unreachable code (MSVC warnings) 2020-04-23 16:36:34 +01:00
MerryMage
a8a712c801 Relicense to 0BSD 2020-04-23 15:45:57 +01:00
MerryMage
d51a83d265 constant_propagation_pass: Fold IsZero 2020-04-22 21:07:09 +01:00
MerryMage
df1a0eecaf constant_propagation_pass: Fold shifts 2020-04-22 21:07:09 +01:00
MerryMage
7242388577 A64: Specialize arithmetic shift SBFM aliases 2020-04-22 21:07:09 +01:00
MerryMage
a13392e432 A64: Specialize sign-extension SBFM aliases 2020-04-22 21:07:09 +01:00
MerryMage
4573511fe3 constant_propagation_pass: Prepare for IR matchers 2020-04-22 21:07:09 +01:00
MerryMage
0d7476d3ec constant_propagation_pass: Propagate constants across commutative operations
e.g. (a & b) & c == a & (b & c) where b and c are constants
2020-04-22 21:07:09 +01:00
MerryMage
f59b9fb020 IR: Add ReplicateBit microinstruction 2020-04-22 21:07:09 +01:00
MerryMage
93adcfa5c6 value: Add GetInstRecursive 2020-04-22 21:06:18 +01:00
MerryMage
996d5cb841 ir_opt: Add IdentityRemovalPass 2020-04-22 21:06:18 +01:00
MerryMage
2ae68b13ed value: Add IsIdentity function 2020-04-22 21:06:18 +01:00
MerryMage
8db4d65587 A64/decoder: Use a lookup table instead of doing a linear scan 2020-04-22 21:06:18 +01:00
MerryMage
0c51313479 A64: Add enable_optimizations configuration option
Allow library users to disable optimizations for debugging reasons.
2020-04-22 21:06:18 +01:00
MerryMage
8bef1afb9a emit_x64_floating_point: SSE2 implementation for DenormalsAreZero 2020-04-22 21:06:18 +01:00
MerryMage
7c917f1c12 CMakeLists: Add DYNARMIC_FRONTENDS option
Allows library user to select which frontends to enable
2020-04-22 21:06:18 +01:00
MerryMage
668a43f815 A32: Detect unpredictable LDM/STM instructions 2020-04-22 21:06:18 +01:00
MerryMage
cd1560c664 emit_x64: Do not clear fast_dispatch_table unnecessarily
Reduces invalidation overhead
2020-04-22 21:06:18 +01:00
MerryMage
35402a9a17 a64_emit_x64: Fix location descriptor generation in GenTerminalHandlers 2020-04-22 21:06:18 +01:00
MerryMage
2770115757 emit_x64_data_processing: EmitMaskedShift: Use appropriately sized immediates 2020-04-22 21:06:18 +01:00
MerryMage
cc012a830c exception_handler_windows: Do not attempt to call cb when cb isn't callable 2020-04-22 21:06:18 +01:00
MerryMage
4e83e81e58 backend/x64: Add fastmem support to Windows exception handler 2020-04-22 21:06:18 +01:00
MerryMage
b7b71d65c2 backend/x64: Add POSIX exception handler with fastmem support 2020-04-22 21:06:18 +01:00
MerryMage
2d348d2d68 backend/x64: Add macOS exception handler with fastmem support 2020-04-22 21:06:18 +01:00
MerryMage
4636055646 a32_emit_x64: Implement fastmem 2020-04-22 21:06:17 +01:00
MerryMage
f9b9081d4c a32_emit_x64: Fully wrapped memory fallbacks
In the same style as the A64 backend
2020-04-22 21:06:17 +01:00
MerryMage
ad52c997f4 a32_emit_x64: Use r14 for page_table pointer 2020-04-22 21:06:17 +01:00
MerryMage
49fcfe040c reg_alloc: Explicitly specify GPR and XMM order
This allows each backend to modify what registers they want to use and their preferred orderings
2020-04-22 21:06:17 +01:00
MerryMage
c232ad7971 a32_emit_x64: Make {Read,Write}Memory member functions of A32EmitX64 2020-04-22 21:06:17 +01:00
MerryMage
5267dbb8cf emit_x64_saturation: Prefer changeBit to setBit 2020-04-22 21:06:17 +01:00
MerryMage
9d60d92692 backend/x64: Make ExceptionHandler its own class 2020-04-22 21:06:17 +01:00
MerryMage
325808949f backend/x64: Rename namespace BackendX64 -> Backend::X64 2020-04-22 21:06:17 +01:00
MerryMage
f569d7913c block_of_code: Reduce jmps in dispatcher loop 2020-04-22 21:06:17 +01:00
MerryMage
7e0c415473 block_of_code: Always specify codeptr to run from 2020-04-22 21:06:17 +01:00
MerryMage
b6536115ef A32: Add Step 2020-04-22 21:06:17 +01:00
MerryMage
f69c77391e A64: Add Step
Allow for stepping instruction-by-instruction
2020-04-22 21:06:17 +01:00
MerryMage
09d3c77d74 IR: Add masked shift IR instructions
Also use these in the A64 frontend to avoid the need to mask the shift amount.
2020-04-22 21:06:17 +01:00
MerryMage
bd88286b21 cast_util: Add FptrCast
Reduce unnecessary type duplication when casting a lambda to a function pointer.
2020-04-22 21:06:17 +01:00
MerryMage
fe583aa076 lut_from_list: Reduce number of required template arguments 2020-04-22 21:06:17 +01:00
MerryMage
81fcb4e537 mp: Migrate to shared version of mp library 2020-04-22 21:06:17 +01:00
MerryMage
28e5af20b5 mp/function_info: Add parameter_count_v 2020-04-22 21:04:24 +01:00
MerryMage
aa225a7dc4 bit_util: Add CountLeadingZeros 2020-04-22 21:04:24 +01:00
MerryMage
25e27282e3 a64_emit_x64: Reduce patchpoint sizes 2020-04-22 21:04:23 +01:00
MerryMage
a59c335b05 A64: Add options for detecting misaligned loads and stores 2020-04-22 21:04:23 +01:00
Marshall Mohror
1ebc1895ee A32/x64: Create a global_offset optimization for the page table (#507)
Instead of looking up the page table like:
  table[addr >> 12][addr & 0xFFF]
We can use a global offset on the table to query the memory like:
  table[addr >> 12][addr]

This saves two instructions on *every* memory access within the recompiler.

Original change by degasus in A64 emitter
2020-04-22 21:04:23 +01:00
MerryMage
e10985d179 ir/basic_block: Add FastDispatchHint to TerminalToString
Use a boost::static_visitor to ensure this is caught at compile-time in the future.
2020-04-22 21:04:23 +01:00
Lioncash
af3614553b A64/impl: Move AccType and MemOp enum into general IR emitter header
These will be used by both frontends in the future, so this performs the
migratory changes separate from the changes that will make use of them.
2020-04-22 21:04:23 +01:00
Markus Wick
93668c24be A64/x64: Create a global_offset optimization for the page table.
Instead of looking up the page table like:
  table[addr >> 12][addr & 0xFFF]
We can use a global offset on the table to query the memory like:
  table[addr >> 12][addr]

This saves two instructions on *every* memory access within the recompiler.

Thanks at skmp for the idea.
2020-04-22 21:04:23 +01:00
MerryMage
6325ac23eb a32_emit_x64: Use std::get_if in EmitA32Coproc* 2020-04-22 21:04:23 +01:00
MerryMage
39bd2c034d constant_propagation_pass: Handle GetCarryFromOp for MostSignificantWord 2020-04-22 21:04:23 +01:00
MerryMage
ada66d7092 a32_interface: Remove unused TransferJitState function 2020-04-22 21:04:23 +01:00
MerryMage
b4884a51e0 a32_jitstate: Only transfer required state
Importantly, reset exclusive state upon transfer.
2020-04-22 21:04:23 +01:00
MerryMage
1aa7b62e92 A32/Thumb: Correct behaviour for UDF and Unpredictable instructions
Raise an exception instead of calling the interpreter and ASSERT-ing respectively.
2020-04-22 21:04:23 +01:00
MerryMage
c7d20f3f2f fuzz_arm: Test MSR and MRS instructions against unicorn
* Add always_little_endian option to mach unicorn behavior.
* Correct CPSR.Mode = Usermode
2020-04-22 21:04:23 +01:00
MerryMage
2f06ef5d4e a32_emit_x64: EmitA32SetCpsr: BUGFIX: Actually set CPSR.GE
Was unintentionally masking the writing of CPSR.GE due to 32-bit immediate sign extension.
2020-04-22 21:04:23 +01:00
MerryMage
0a6f822d76 a32_emit_x64: GenTerminalHandlers: Remove unnecessary mov 2020-04-22 21:04:23 +01:00
MerryMage
717bd2fbb2 A64: Add hook_hint_instructions option 2020-04-22 21:04:23 +01:00
MerryMage
396116ee61 A32: Add hook_hint_instructions option 2020-04-22 21:04:23 +01:00
MerryMage
2f2a859615 a32_jitstate: Consolidate upper bits of location descriptor into upper_location_descriptor
Also solves a performance regression initially introduced by b6e8297e369f2dc4758bafe944e51efb8d1a2552,
primarily due to excessively mismatched load/store sizes causing less than optimal load-to-store forwarding.
2020-04-22 21:04:23 +01:00