This patch makes the VIXL_INCLUDE_SIMULATOR and
VIXL_GENERATE_SIMULATOR_CODE header guards specific to either AArch64 or
AArch32. Even though the simulator only support AArch64. The build
system was updated accordingly, the "simulator" variable now takes
"aarch64" or "none" as possible values instead of "on" and "off".
This fixes issues we have when we want to build VIXL natively on
AArch64 without a simulator, but still include the AArch32
macro-assembler. The later would check for VIXL_GENERATE_SIMULATOR_CODE
and then generate calls to native code, which breaks.
Change-Id: I2850782558d4cc37f37c1644f0efbd70a3123057
This patch refactors VIXL to use `extern` block when including C header
that do not have a C++ counterpart.
Change-Id: I203d7d107755dbac3e5f4cf8d2f196f70dea1e07
Switch the assertion to the destination register, and add some extra tests for
vector sources moved to scalar destinations.
Change-Id: I79fd68d2e65927747f5bdebaa64df06a7435cc1d
The test generator would use Google's style guide instead of VIXL's when
running clang-format over the generated files. Now that VIXL has its own
".clang-format", let's use it.
Change-Id: I960ed290d1b7e762da9e96f105b83e749ed560a5
When cross-compiling with GCC 5.2 we get a type-limits warning in
test-trace-aarch64.cc, because of comparing a char with EOF. `getc` and
`putc` work with integer so we should use this instead. The issue comes
from the fact that the signedness of char is undefined.
Change-Id: Ia7140643562875b66db6c5a9df83acb4b146df04
When cross-compiling with GCC 5.2 we get a type-limits warning in
test-trace-aarch64.cc, because of using EOF. Work around it by using
`char_traits<char>::eof()` which is equivalent.
Change-Id: I51e474b03f46ab36f4eacee9903614d6441c98af
The previous implementation was not emitting the pools when it needed to upon
construction, and was not correctly blocking emission of the pools.
Change-Id: I06db5b5891234946b139ba64898929c0e3ced3c4
It now inherits from `CodeBufferCheckScope` instead of reimplementing the
buffer size checking feature.
Change-Id: I9cb5f0ea49aba8b87c21d9de41d94562265943f3
A missing namespace declarations in the examples triggered a compilation
issue. We need the "vixl" namespace for the definition of "byte".
Change-Id: If2bdf9df5cb72dbfce9d480d1de1f7699acaa128
For now, simulated runtime call support is disabled for GCC before
version 4.9.1. A proper fix requires another way to force evaluation
order.
Also, fix a compiler warning.
Change-Id: Iffb258aec6f36cdd0a1e0da2f419bd3de0c6ca72
In particular, the updated implementation works when initialising the code
buffer with a size of `0`.
Change-Id: Ic84ef05d45cace5411c472904aa23664455d0a0a
Specifically, replace SetT32(false) with SetA32(), and SetT32(true) with
SetT32(). This also adds a parameterised SetInstructionSet(...) helper, and
allows the instruction set to be set in the constructors.
Change-Id: I82609823a4b2af908b38c0a4240ff239561f7507
Tests pass on Linux and OSX. These compilation flags were added during the
AArch32 backend development, but are now apparently unnecessary.
Change-Id: I016b9d1ccd0d4c0450ee1f8f0f61ce9e784fafa9
This patch unwraps comments showing instruction's expected disassembly
in comments. We have a NOLINT marker so clang-format will not wrap it
again.
Change-Id: I66de6b4543e8f068799a89e0cb613ded7bd9ed6f
Currently, a `GenericOperand` can represent a `CPURegister` or a
memory area (`MemOperand` extended by a 'size' field).
Change-Id: Ic37c4da07ea888444ccb1bfbd82646d0c56bbe84
Some assembler tests were *exhaustively* testing the encoding of instructions.
This lead to a few test files taking more than 10 minutes to compile with GCC.
(Clang takes around 15 seconds.)
We reduce the number of tests to a level that is still acceptable, but that also
leads to an acceptable compilation time with gcc.
Before:
time CXX=clang++ scons all -j40
898.17s user 19.20s system 1418% cpu 1:04.68 total
time CXX=g++ scons all -j40
5275.81s user 53.89s system 742% cpu 11:57.93 total
After:
time CXX=clang++ scons all -j40
622.55s user 14.86s system 1319% cpu 48.309 total
time CXX=g++ scons all -j40
1239.82s user 27.78s system 2283% cpu 55.517 total
Change-Id: I92c98776c99a35eba2652d837aa4792c0eda71b6
Otherwise, after regenerating the tests, `clang` fails with:
error: no newline at end of file [-Werror,-Wnewline-eof]
Change-Id: I794cf5eb711acfac9902a4f4883fc120875f2f90
We manually print NaNs with a known output to have coherent traces across all
implementations of `printf`.
Change-Id: Ice93ab39c6379280c6cb012b911e6fdc15de2445