Skip to content
  1. Jul 17, 2020
    • Jacob Bramley's avatar
      Update version to 4.0.0. · 71a30a2b
      Jacob Bramley authored
      This is the last major version that builds with C++98 or C++11. Future
      major releases will require C++14.
      
      Change-Id: Ic01e45e80d1e0ab8230825884a6ac5b64abae0d3
      4.0.0
      71a30a2b
  2. Jun 22, 2020
    • Jacob Bramley's avatar
      Remove some unnecessary casts in `LoadStoreMemOperand`. · cb0cfc31
      Jacob Bramley authored
      The casts appear dangerous, since they would shorten the value in an
      implementation-defined way. They weren't actually dangerous, because
      each case was guarded by an `IsImm...` helper, but they are
      unnecessary, and removing them makes the code easier to audit.
      
      Also clarify some variable names in related functions.
      
      Change-Id: Ib565965e3e6c4c0683c79d68eac51771d9e8b667
      cb0cfc31
  3. Jun 19, 2020
  4. Jun 11, 2020
    • Martyn Capewell's avatar
      Remove stray assembler method declarations · a3c11462
      Martyn Capewell authored
      Remove assembler methods for PAC instructions that don't exist. These aren't
      implemented in the assembler, so only the header file is affected.
      
      Change-Id: I1b264a002211227989469bc5ed7234863c00d230
      a3c11462
  5. Jun 05, 2020
    • Jacob Bramley's avatar
      Fix the 'sh' field for ADD/SUB immediate. · 2b66cd62
      Jacob Bramley authored
      We treated this as a two-bit field <23:22>, with encodings recognised
      only when bit 23 was zero. The latest XML describes it as a one-bit
      field <22>. The decoder already excludes encodings with bit 23 set, so
      no behaviour is changed, except that the instruction masks (e.g.
      `AddSubImmediateFMask`) should work more consistently.
      
      This patch also renames `ShiftAddSub` to `ImmAddSubShift` to make it
      clear that it applies to "immediate" forms, and not to "shifted" form.
      
      Change-Id: Ieea2fc5c8a7cfb057983b7063372ee6f760d82a1
      2b66cd62
  6. Jun 02, 2020
  7. May 11, 2020
    • Pierre Langlois's avatar
      [simulator] Remove instruction instrumentation support. · 991ee198
      Pierre Langlois authored
      This code hasn't been used in a long time so let's remove it. If one needs to
      extract information from generated code, it's easy to add throw-away code to do
      it in the simulator, so having first-class support for this isn't crucial. Also,
      being tied to the decoder made the instrumentation support a little too
      limiting.
      
      Change-Id: Icf863a8b0bc19ac20bea3eb39e091c5e632982fc
      991ee198
  8. May 07, 2020
  9. Apr 24, 2020
    • Jacob Bramley's avatar
      Document that the DecoderVisitor interface is unstable. · d1463742
      Jacob Bramley authored
      This is primarily a documentation change, claiming the ability for us to add
      visitors even on minor version updates. This is necessary for adding support for
      most ISA extensions.
      
      To mitigate the inconvenience to use-cases that only examine a subset of
      visitors, this patch includes a variant of DecoderVisitor that provides default
      (empty) visitor implementations.
      
      Change-Id: I42281aaff95b23759868dee67bc3fc18ca8c726f
      d1463742
  10. Mar 13, 2020
  11. Dec 17, 2019
  12. Dec 03, 2019
  13. Nov 08, 2019
  14. Oct 07, 2019
  15. Oct 03, 2019
  16. Oct 02, 2019
  17. Aug 09, 2019
    • Pierre Langlois's avatar
      Fix stringop-truncation GCC9 warning. · 26384722
      Pierre Langlois authored
      GCC9's stringop-truncation warning isn't happy about having the destination and
      the bound of a strncpy being equal since the resulting string will not be
      NULL-terminated:
      
      ~~~
      src/aarch64/instrument-aarch64.cc: In constructor ‘vixl::aarch64::Counter::Counter(const char*, vixl::aarch64::CounterType)’:
      src/aarch64/instrument-aarch64.cc:35:10: error: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Werror=stringop-truncation]
         35 |   strncpy(name_, name, kCounterNameMaxLength);
            |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ~~~
      
      However, we manually NULL-terminate right after so we're actually fine. It
      doesn't hurt to fix the warning though by reducing the bound by 1.
      
      See the third paragraph from
      https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Warning-Options.html#index-Wstringop-truncation
      
      Change-Id: I74d37dbe13c0d04da9a24c71bc6ef6a92e8333ce
      26384722
  18. Jul 31, 2019
    • Jacob Bramley's avatar
      Clean MemOperand. · 713116bf
      Jacob Bramley authored
      Notably, this removes some deprecated functions, and adds some
      documentation for some existing functions with slightly surprising
      behaviours.
      
      Change-Id: Ibd1f07986f04c4dad075dae69246369e7acf9030
      713116bf
  19. Jul 10, 2019
    • Jacob Bramley's avatar
      Add some more substantial benchmarks. · 1d925c01
      Jacob Bramley authored
      Add MacroAssembler, Disassembler and Simulator benchmarks.
      
      These are superficially representative of real VIXL uses, but not based
      on real workloads.
      
      Change-Id: Ieda7d9f44cab1eb1f23ea5e8caa509982fa6740b
      1d925c01
    • Jacob Bramley's avatar
      Make the benchmarks run for a predictable time. · eb2af7fe
      Jacob Bramley authored
      Before this patch, some benchmarks would take much longer to run than
      others, and the iteration count argument would often need to be
      adjusted to find a reasonable compromise.
      
      Now, the command-line argument specifies the desired run-time, so that
      the same benchmarks can be used on all platforms.
      
      Argument parsing and result printing are now centralised, to reduce
      duplication, and to ensure that we use a consistent interface for future
      benchmarks.
      
      Change-Id: Ic4dd481402b2e556dadffef66f414af7ff3bd504
      eb2af7fe
    • Jacob Bramley's avatar
      Configure a basic .clang-tidy. · 5523f6cf
      Jacob Bramley authored
      Also, fix some issues that it found.
      
      We will enable more rules in the future. In particular, some google-*
      rules should already pass, but appear not to at the moment.
      
      Once we have enabled enough of these rules, we intend to drop the
      dependency on cpplint.
      
      Change-Id: I107231cf57b5500a3f1b623510419665589531dc
      5523f6cf
  20. Jul 08, 2019
    • Jacob Bramley's avatar
      Remove TEARDOWN. · fa6cee0e
      Jacob Bramley authored
      We haven't used TEARDOWN consistently in all of the tests. Since it
      doesn't actually do anything, it makes more sense to remove it than to
      try to use it everywhere.
      
      Change-Id: I5f0154ae35626bc66d4702c7d3894fd90feddb47
      fa6cee0e
  21. Jul 05, 2019
  22. Jul 01, 2019
    • Jacob Bramley's avatar
      Factor out get_source_files in the tools. · f89cb485
      Jacob Bramley authored and Jacob Bramley's avatar Jacob Bramley committed
      Before this patch, lint.py would scan all C++ files present in HEAD
      (but with any modifications from the working directory), whilst
      clang_format.py would look at all C++ files without consulting Git.
      
      This patch introduces a `get_source_files` utility, now used by both
      scripts, which looks only at the file system.
      
      This means that lint.py will now scan untracked files, but since
      clang_format.py already did that (and would cause test.py to fail if
      they weren't properly formatted), this seems to be reasonable behaviour.
      
      The alternative -- looking at files known to Git -- is attractive, but
      it could be misleading because we scan the state of those files in the
      working directory, not in Git's HEAD.
      
      Change-Id: I88ab245c6452b5bdf3e8ffa3eabb223cc9339f3e
      f89cb485
  23. Jun 27, 2019
    • Anthony Barbier's avatar
      Report skipped tests in the results. · 88e1d03d
      Anthony Barbier authored
      - Keep track of the tests which are skipped because they're known to fail.
      - Moved multithreading code in a separate module so it can be re-used.
      - Keep track of the tests which are skipped because the CPU is missing features.
      - Added --verbose mode
      
      Change-Id: I8832a1ac10738461eb5f4740e8bf060f13866132
      88e1d03d
  24. Jun 12, 2019
    • Jacob Bramley's avatar
      Support --disassemble in TRACE tests. · 4ba4913f
      Jacob Bramley authored
      Normally, the temporary file is removed when the test exits, so there's
      no way to know what was actually traced.
      
      Now, --disassemble and --trace-sim work as they do for other tests.
      
      Change-Id: Ie241647824fe28168108ae1d0a009c00db8963e6
      4ba4913f
  25. May 03, 2019
    • Pierre Langlois's avatar
      Allow throwing exceptions from destructors for testing. · a5b3cefd
      Pierre Langlois authored
      If VIXL_NEGATIVE_TESTING is on, VIXL_ASSERT and VIXL_CHECK will throw
      exceptions. However, when building with C++11, destructors are implicitly marked
      as `noexcept` which means that throwing an exception from a destructor will
      terminate the program.
      
      Because of this we would fail to build with clang version 6 or higher because of
      warnings.  And more imporantly, the AARCH32_DISASM_unbound_label negative test
      would fail when built with C++11. We missed this since test.py only builds
      negative tests with C++98 by default.
      
      To fix this, we have to mark all desctructors that can throw as
      `noexept(false)` using a macro.
      
      Change-Id: Ia22105df3ffa462fbe24db37f63f1558b671cf7b
      a5b3cefd
  26. Apr 29, 2019
  27. Apr 25, 2019
    • Jacob Bramley's avatar
      Fix CPURegList::IncludesAliasOf(int). · 0576dc4c
      Jacob Bramley authored
      No new tests are included but this patch rewrites IncludesAliasOf(CPURegister)
      in terms of IncludesAliasOf(int) so that existing usage covers the fix.
      
      Change-Id: Idfc141a7b48548566e701c0a47cb17ad869540c4
      0576dc4c
  28. Apr 17, 2019
  29. Apr 15, 2019
    • Jacob Bramley's avatar
      Fix VRegister::IsFPRegister(). · 7b712bec
      Jacob Bramley authored
      VRegister::IsFPRegister() now returns true only for scalar H, S and D registers.
      
      CPURegister::IsFPRegister() now returns true for H registers, but since
      CPURegister doesn't carry lane information, it also returns true for vectors
      such as `v0.V2S()`.
      
      Future patches will encode lane information in CPURegister itself so that the
      behaviour can be consistent -- like VRegister::IsFPRegister() -- throughout.
      
      Change-Id: I5ad5aef5e9d80829ab359e72d542354e142cc292
      7b712bec
    • Jacob Bramley's avatar
      Remove the old FPRegister type alias. · cf93ad51
      Jacob Bramley authored
      Change-Id: Ia43cd9e23736fa4130ab0416889289b559ee2467
      cf93ad51
  30. Apr 02, 2019
    • Jacob Bramley's avatar
      Execute tests when required features are available. · ceab416b
      Jacob Bramley authored
      As before, we assume that all features available to the Simulator, but now we
      can execute tests on hardware when the necessary features are available
      (according to `CPUFeatures::InferFromOS()`).
      
      Change-Id: I7ae3712fee912bad630977cc4e71103dd337c1d2
      ceab416b
  31. Mar 29, 2019
    • Evgeny Astigeevich's avatar
      Fix MaskAddresses to support AOSP toybox sed · d98968ab
      Evgeny Astigeevich authored and Jacob Bramley's avatar Jacob Bramley committed
      In MaskAddresses sed is used to preprocess traces.
      In AOSP switching to use a toybox sed instead of GNU sed for build tools was done.
      Command line options and regular expressions for GNU sed don't work for the
      toybox sed causing test failures:
      1. Toybox sed does not support '--in-place --regexp-extended'.
      2. Toybox sed does not support hexadecimal expressions.
      
      The CL changes MaskAddresses to work with toybox sed:
      1. Use '-i -E' instead of '--in-place --regexp-extended' because they
      have the same meaning. GNU sed also supports '-i -E' instead of
      '--in-place --regexp-extended'.
      2. Encode the ESC character directly in the source.
      
      As the CL makes some macros redundant the macros are removed.
      
      Change-Id: I072e59ed765adff574c8890eb8610799602a1b78
      d98968ab
  32. Mar 26, 2019
    • Martyn Capewell's avatar
      Split assembler tests · 6af2cf40
      Martyn Capewell authored and Jacob Bramley's avatar Jacob Bramley committed
      Separate asm tests into FP, NEON and remainder to make the file more manageable
      and faster to build.
      
      Change-Id: I497910cd02da6f124e3e1e6a92e9a1f992981292
      6af2cf40
  33. Mar 21, 2019
    • Jacob Bramley's avatar
      Implement CPUFeatures::InferFromOS for Linux. · 48934329
      Jacob Bramley authored
      This also includes CPUFeatures::InferFromIDRegisterEmulation since that is the
      mechanism used for recent features in Linux.
      
      This has been checked against the documented behaviours, but has not been tested
      for many of the recent features.
      
      Change-Id: I94d9ee05f225f12f5eb72f9d30f23ec236a38d53
      48934329
Loading