Age | Commit message (Collapse) | Author |
|
This reverts commit 0a75ba66aa15ea1cdb3f57d0efd4ce7e7c14d45f.
Test: mma test-art-host-vixl
Test: test.py --host --optimizing --jit --gtest
Test: test.py --target --optimizing --jit
Test: run-gtests.sh
Change-Id: I052ab4d3243b0b9bee4c52d00ba4ef1d93a8d32c
|
|
Revert "ART: Fix breaking changes from recent VIXL update."
Revert submission 1331125-VIXL_UPDATE_SVE
Reason for revert: broken build git_master-art-host/art-gtest-heap-poisoning @ 6936943
Reverted Changes:
Ic10af84a0:Merge remote-tracking branch 'aosp/upstream-master...
I752a0b0ba:ART: Fix breaking changes from recent VIXL update....
Bug: 171879890
Change-Id: I6f0f5d1e176e2069301685eeb95a3c76364226ff
|
|
Change-Id: If2ce450e490dd1ad4fcaba78985af84cc847986f
|
|
Change-Id: Iab1d669cb0cadb1628ef28fa01b1c18370e2d3d0
|
|
Change-Id: I169f90b718900760d823116b581f6d11a1e00500
|
|
Use print style compatible with Python 2/3.
Set text mode in popen so that textual regexps work.
Change-Id: I079587afd0cf6c896ff5adb5dda3f2bc1fdeff4a
|
|
All of our known users already use C++14 or later, and C++14 offers some
features that have potential to be very useful to VIXL.
This change updates the build scripts, and adds a #error guard to catch
unsupported '-std' overrides. It does not introduce any C++14 code.
Change-Id: If72806ff9d9e9695cce8d677d301318f09312de3
|
|
Add MacroAssembler, Disassembler and Simulator benchmarks.
These are superficially representative of real VIXL uses, but not based
on real workloads.
Change-Id: Ieda7d9f44cab1eb1f23ea5e8caa509982fa6740b
|
|
This warning generates a lot of false positives because we often create stubs
and compile-time configurations with things like VIXL_UNIMPLEMENTED(). Properly
satisfying -Wmissing-noreturn requires that we annotate functions at their
_declarations_, which means we need to add #ifdefs to the header files.
Conditional compilation in headers can result in incorrect behaviour when
libvixl.so is built with different flags than the code using it. Disabling this
warning allows us to simplify the headers, and should make VIXL more robust.
Change-Id: I9bb727be1cf1e2e003491701be25c7b27bd4e2a7
|
|
- Add support for compiler wrappers in SCons (Disabled by default).
- In tools/test.py: enable ccache if it is available.
- Set the environment variable CCACHE_CPP2 to 'yes' to fix warnings on
ubuntu 16.04.
Change-Id: If8d1b094143a5c1a9c58fd7c204655f8889d34fd
|
|
- Removed '--fast' (As requested by Jacob / Martyn).
- Removed '--simulator' (Unused).
- Changed default targets to [ 'a64', 't32', 'a64,a32,t32'] as requested
by Jacob.
- Fixed negative_testing handling (Still disabled by default).
- tools/test.py refactoring / simplification:
- Removed TestOption classed and used a custom argparse.Action
instead.
- Keep environment_options and build_options as dictionaries instead
of strings.
- Simplified CanRunAarch64 / CanRunAarch32.
- Simplified ListCombinations
- Explicitely pass variables around instead of relying on
global variables.
- Created a ReturnCode class.
- Cap the maximum number of threads to 32.
Takes about 31min to run on x86 (Using cccache but not regrouping the
tests at the end of the run).
Change-Id: I381b80e866974d82d7caeb2e6b7e5483f395aab2
|
|
Remove the -O3 flag to compile aarch32 and aarch64 tests in release
mode: it significantly speeds up the compilation time and doesn't
affect the execution time of the tests.
Change-Id: Icecc64e4324476dd3016e7bc45d9190454664a49
|
|
These tests have been disabled for a long time, apparently by accident. This
patch restores them, and applies fixes necessary to get them working. Notably:
- Fix the simulated-runtime-calls example, and correct an ifdef to ensure that
it builds.
- Enable --trace-* options for test-examples, to match the behaviour of other
tests.
Change-Id: Iab0034f19ce935ba7237f8546f9c43f8cec13312
|
|
Now, when the Assembler is asked to assemble an instruction, it asserts (in
debug mode) that the necessary features are available.
This also updates the tests to use no features by default, so that they must be
explicitly requested in the test itself. This provides some assurance that the
Assembler contains reasonable checks.
This patch uses variadic macros, which are a C99/C++11 feature, and I had to
silence a warning in the build system for C++98 builds. However, its use is
restricted to the tests, and we already rely on some other C99 features.
Change-Id: Ifb9846504f98c6d0912f60ff25f219ce2b780755
|
|
Change-Id: I80e40b804cc1d4389f098de834e13ce6a042fc06
|
|
negative testing
GCC 6 now warns if one throws from a destructor. However, we need to do it when
negative testing is enabled so let's silence warnings for these cases.
Change-Id: Ib6e621ed52edd3478bb0113147f46dc92c9e3805
|
|
The 'target_arch' option has been replace by 'target' which can be any
combination of aarch32, aarch64, a32, t32, a64.
Change-Id: Id5cd052276747cd718551f562b74f79443b91869
|
|
Ideally, we'd like to template this somehow to avoid the use of the
preprocessor, but this will work for now.
Change-Id: Iba88b04a97f516ddb13a83035b078d8cf599da6c
|
|
Add a new `doc` target to scons that runs `markdown` on the
documentation. The generated html files are kept in the source tree.
Change-Id: I09c9b275a6cfdd7c68c5fb6a14f551dd7bd1b084
|
|
This patch introduces another pass when running scons that makes sure
the options given are sane. If not, an error is given.
For example, one cannot have a 64-bit simulator and omit the AArch64 target:
```
$ scons target_arch=aarch32 simulator=aarch64
scons: Reading SConscript files ...
scons: *** Building an AArch64 simulator implies that VIXL targets AArch64. Set `target_arch` to `aarch64` or `both`.
File "/work/vixl/vixl/SConstruct", line 183, in simulator_validator
```
And finally, we do not yet support building the AArch64 VIXL in
32-bit. The simulator needs to ported to 32-bit.
```
$ CXXFLAGS="-m32" LINKFLAGS="-m32" scons target_arch=aarch64
scons: Reading SConscript files ...
scons: *** Building VIXL for AArch64 in 32-bit is not supported. Set `target_arch` to `aarch32`
File "/work/vixl/vixl/SConstruct", line 177, in target_arch_validator
```
Change-Id: I6d27af06a1df5b68ff43d0fdcf794571e3182f58
|
|
This adds the 'negative_testing' scons flag, which defaults to 'off'. When the
flag is 'on', VIXL_ABORT, VIXL_ABORT_WITH_MSG and VIXL_CHECK are modified so
that they throw an exception instead of aborting. Negative tests can then catch
these exceptions.
One new build configuration is added to tools/test.py:
mode=debug std=c++11 negative_testing=on
Change-Id: I97f529318ba633650954ad32fed8acedae2a6d8b
|
|
This fixes a clean-up in f737e0a. The code now matches the comment.
Change-Id: I488fd98efa0fd4b87a1d0f48656259ac6f6907a7
|
|
This patch adds a matcher for compiler versions in tool/util.py, to be
used in SConstruct. We now have a new `utils.CompilerInformation` class,
that can be created from the path of the compiler. It can then be
compared with a string describing the requirements:
compiler = util.CompilerInformat("/path/to/c++")
# Check the compiler is clang.
if compiler == 'clang':
# Check its version.
if compiler == 'clang-3.8':
# Valid only using clang version 3.8 exactly
if compiler >= 'clang-3.6':
# Add options that weren't supported in clang before 3.6
# Check the compiler is at least gcc 5:
if compiler >= 'gcc-5'
# Add new options
if compiler == 'gcc-4.8':
# Workaround gcc 4.8
Finally, this patch uses this to make sure warnings about the `override`
keyword are supported.
Change-Id: I5c779ba88d6b476b12b66a86b966efe280ae2f8d
|
|
This patch introduces a VIXL_OVERRIDE macro. When building with gcc
-std=c++11, we now enable the `-Wsuggest-override` warning so that we do
not forget to add them in the future.
Change-Id: I0f402599019ba9de1a7a654e9499f00a07f00201
|
|
Change-Id: Ic31de085f4e02f449bc3c3806f605ad6eb0b143a
|
|
Change-Id: I0be46b180653b657ad78665a90323e36fe2aaef9
|
|
Change-Id: I342d3190b5da34809159b16cb667534bb6205e0a
|
|
Change-Id: Ia62f3529e62aae31452087df734ba051ed86dace
|
|
This patch fixes cases of implicit 64 to 32 bit narrowing. The issue is
that `CodeBuffer` represents code offsets with `ptrdiff_t`, which will
be 64 bit on a 64 bit system. However, we want to support generating 32
bit code from a 64 bit program, therefore the 32 bit part of VIXL works
with `int32_t` for code offsets. We had implicit conversions happening
due to this.
We solve this by explicitely casting to `int32_t` in the AArch32
assembler when calling `GetCursorOffset`. If you are working with the
`CodeBuffer` directly, you are dealing with a code buffer on the host
and so will work with offsets as `ptrdiff_t`. But, when working with the
AArch32 assembler itself you will get offsets as `int32_t`. The
assembler is in charge of checking that the offsets it gets from the
code buffer fit into `int32_t`.
Additionally, we had narrowing cases when generally wrapping host
pointers into an Operand. This can only work if the pointer fits into 32
bits. This patch introduces a Operand::From() factory method that can be
used for converting any integral or pointer type to an immediate
operand.
Change-Id: Icc15711b34c2477ed997eef238e25496d86ea9aa
|
|
This commits adds benchmarks similar to what we have for AArch64:
- bench-branch-link: Emit a lot of branches to force veneers being
emitted.
- bench-branch: Exercise label binding and relative address patching.
- bench-dataop: Assemble "add r0, r1, r2" many times in a buffer.
This is a reland of those benchmarks. There were build issues with the
previous commit because the "vixl" namespace was not included. The
benchmarks were also using an API for setting the ISA was was removed.
Change-Id: I5f41f8ca2302264dd5595626f99d200d64108120
|
|
This patch disables the `long-long` warning when compiling with
`std=c++98`. This is needed to build natively for AArch32.
We used to disable the `c++11-long-long` warning especially for
OSX. However, this warning is LLVM specific and also equivalent go
`long-long`. We should use the latter to be compiler agnostic.
Change-Id: I1a1a9da8bc94b66ef1741875bbe9b6e3358a1677
|
|
This patch adds the `target_arch` configuration variable to scons. It
allows the user to build vixl for either AArch32, AArch64 or both.
The default configuration are changed slightly with this patch:
- On architectures other than AArch32 (x86_64), we build VIXL for both
AArch32 and AArch64. If the architecture is not AArch64, this will
include the simulator.
- On AArch32, including cross-compiling, we build VIXL for AArch32
only. The reason for this is VIXL's AArch64 target does not build on a
32 bit platform yet.
Of course, the user can override this by setting `target_arch`.
Finally, we have dropped the use of `platform.machine()` from
`SConstruct` as it doesn't cope with cross-compilation. Instead, we
directly query the compiler using the `-dumpmachine` option which print
the target triplet. This will set the `host_arch` variable which will
then influence `target_arch`.
Change-Id: I5f9fbc1343e0957475a2a8309bca00c4d35a7724
|
|
This reverts commit 11f20220862044cb2685f3b6b8abbef2ba1c53d4.
Change-Id: I52d927bc8f6c7fc770ab6e18348acf3365b24faa
|
|
Change-Id: Id59d7f853d7a85a9a326ec63d38d00def89e3c7c
|
|
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
|
|
Objects visible via headers should have the same data-layout in release and
debug modes.
Change-Id: I7ce5014ab8406968cdd8e9818a7f840cb443b6c1
|
|
Tests pass on Linux and OSX. These compilation flags were added during the
AArch32 backend development, but are now apparently unnecessary.
Change-Id: I016b9d1ccd0d4c0450ee1f8f0f61ce9e784fafa9
|
|
Tested with OSX 10.9.5.
Change-Id: I0073134eeb9146739b333e87b47511e36ca5dc82
|
|
It breaks compilation on OSX (tested with OSX 10.9.5).
Change-Id: Ie8012829d9d5d4faa5f67451a44ffd8a5daeba46
|
|
Change-Id: I40a929b1095ee3e1b2ca5ef879c7006d8b59acc9
|
|
Change-Id: Ifb505e5664996c1af41e38376e58ba49864213a3
|
|
Change-Id: I435bf61633433a80647b58eeeb22d7de6de44227
|
|
Add support for the A32 and T32 instruction set architectures in
seperate a32 directories.
Note that this commit introduces aarch32 and aarch64 namespaces so
existing client code will need to be adjusted.
Refer to doc/getting-started-a32.md for an introduction.
Change-Id: Iaf3e5f496ec4e19d77d304128e6920daa4549e78
|
|
This commit only moves files and updates the `#include` paths appropriately.
Change-Id: I9d430bd34af617c943a6c6570c9a3c27169eaf1b
|
|
Refer to the README.md and LICENCE files for details.
Change-Id: I922914f4e7da7cb939a8054cded11feb9ea51a86
|
|
Refer to the README.md and LICENCE files for details.
|
|
Refer to the README.md and LICENCE files for details.
|
|
Refer to the README.md and LICENCE files for details.
|
|
Refer to the README.md and LICENCE files for details.
|
|
Refer to the README.md and LICENCE files for details.
|