History log of /external/vixl/src/aarch32/assembler-aarch32.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
f9d8c6e6eacb90fa4284a0d3fc784ad2bc4874af 12-Sep-2017 Vincent Belliard <vincent.belliard@arm.com> Check unpredictable (OutsideITBlock()) for crc, hvc.

Change-Id: I1d61eac5e2db61b9e89e88438089d1c6ba672c84
/external/vixl/src/aarch32/assembler-aarch32.h
8b57c86886020cf0a5331823be4789ee558764e2 02-Mar-2017 Georgia Kouveli <georgia.kouveli@arm.com> [pool-manager] Integration with aarch32.

Key points of this patch:
- renames LabelBase to LocationBase
- makes the Location class derive from LoctionBase
- moves the code for Location, Label and RawLiteral/Literal to a shared file
- moves ReferenceInfo out of Assembler
- removes all the old veneer pool and literal pool code
- updates the macro assembler to use the new pool manager
- updates existing tests that expect a certain behaviour from the pool manager
- adds new tests for corner cases that came up during integration
- adds tests for issues that the new pool manager addresses (literal_and_veneer_interaction_*)

Change-Id: Ied81401d40f88cb988ff95e85fe832851f171f77
/external/vixl/src/aarch32/assembler-aarch32.h
275c9d477d5bb717ac48f29db4ed153495be5ad3 12-May-2017 Georgia Kouveli <georgia.kouveli@arm.com> [pool-manager] Split Label and Literal.

Add a new Location class that's a parent of both Label and Literal. Uses of
Label and Literal in the MacroAssembler stay as before, whereas in the
Assembler the new simple Location class is used.

Also changes the EmitOperator to store the ISA of the reference instruction (to
avoid storing this information in ForwardReference), and removes the minimum
and maximum offsets from EmitOperator, since that information is now stored in
ReferenceInfo. Addition of the architecture-specific PC-offset is now done in
the Encode method of the EmitOperator, where we don't need to check which
instruction set we are using (it's statically known).

These changes are in preparation of integration with the new pool manager, but
also clean up usage of labels and literals in some cases. For example, it won't
be possible to jump to a literal with the MacroAssembler anymore, as Literal
does not derive from Label.

Change-Id: I1139faaccfbd087e97ecbff2cfc2433a35582973
/external/vixl/src/aarch32/assembler-aarch32.h
4b139a2dd8a7c32fc0f7df0cfd36d6c1336bc26c 31-Mar-2017 Georgia Kouveli <georgia.kouveli@arm.com> [pool-manager] Add helper functions to get info on forward references.

Change-Id: I0da221d37d8fa8b0188ace565be37a5f3dd6f3da
/external/vixl/src/aarch32/assembler-aarch32.h
07f9e742691f10b7ff8b0107415eb94e157c2b33 21-Apr-2017 Vincent Belliard <vincent.belliard@arm.com> Use SOperand and DOperand for cmp and cmpe.

Change-Id: Ie5419a9f423c9dca7e21308ce3b35909500f2ca2
/external/vixl/src/aarch32/assembler-aarch32.h
609821fcd0b88f46b514e1938c420bde12284267 08-Feb-2017 Vincent Belliard <vincent.belliard@arm.com> Use an integer instead of an operand for bfc, bfi, sbfx and ubfx width operand.

Change-Id: I5eb025f01b4d92eded9a393b6364c38de27c6fe5
/external/vixl/src/aarch32/assembler-aarch32.h
9a9331faeba996d6c85e6e2a6355ccfc22c6cab6 09-Dec-2016 Rodolph Perfetta <rodolph.perfetta@arm.com> Allow conditional inclusion of A32, T32 and A64.

The 'target_arch' option has been replace by 'target' which can be any
combination of aarch32, aarch64, a32, t32, a64.

Change-Id: Id5cd052276747cd718551f562b74f79443b91869
/external/vixl/src/aarch32/assembler-aarch32.h
0cc43be9ba1881f608a25467b1387927af3b4caa 22-Dec-2016 Pierre Langlois <pierre.langlois@arm.com> Revert "[aarch32] Dot not abort when one uses unpredictable or strongly discouraged instructions"

This reverts commit d836966fcbe0ec3136486ec36de6bd2572d451eb.

Change-Id: I3e8b0ea9bc43594ab3ad569e54f78e00593dfea8
/external/vixl/src/aarch32/assembler-aarch32.h
d836966fcbe0ec3136486ec36de6bd2572d451eb 19-Dec-2016 Pierre Langlois <pierre.langlois@arm.com> [aarch32] Dot not abort when one uses unpredictable or strongly discouraged instructions

Calling VIXL_ABORT when a MacroAssembler object would call
AllowUnpredictable or AllowStronglyDiscouraged would prevent us from
handling those cases in delegates. It should be up to a delegate to
decide whether to give the user an error or generate an alternative code
sequence.

Additionally, the user is able (but that's not recommended of course) to
lift the UNPREDICTABLE or STRONGLY DISCOURAGED limitation using
scopes. Since the AllowUnpredictable() and AllowStronglyDiscouraged()
methods were virtual and overriden by the macro-assembler to
abort. There was no way to write the following code:

```c++
MacroAssembler masm(T32);
{
ExactAssemblyScope scope(&masm, ...);
AllowUnpredictableScope allow_unpredictable(&masm);
// Here be dragons!
}
```

This patch fixes this by turning AllowUnpredictable() and
AllowStronglyDiscouraged() into non-virtual methods.

Finally, the related scopes were inside the `aarch32::Assembler::`
namespace, which is inconsistent with other scopes. Move it to
`aarch32`.

Change-Id: I42e5b772e850a8c23521385cf399aaae77b5eab6
/external/vixl/src/aarch32/assembler-aarch32.h
9ae5da2ba518573576cc92e93e7a01dd34c8d1f7 05-Dec-2016 Vincent Belliard <vincent.belliard@arm.com> Specify instructions which use a delegate.

Change-Id: I47b2ed73eab09d5ed6541073d571300e2fcdeef0
/external/vixl/src/aarch32/assembler-aarch32.h
000f93f0af01f9a3f250ad8fb8cd7a42e7b31c99 01-Dec-2016 Baptiste Afsa <baptiste.afsa@arm.com> aarch32: Add a few assertions in code dealing with literals.

Change-Id: Idce680b4f7b98fa1fadfdbc079783e05aa01c3f0
/external/vixl/src/aarch32/assembler-aarch32.h
8d191abf32edf41421f68f35585e4fce8da4d50c 29-Nov-2016 Alexandre Rames <alexandre.rames@linaro.org> AArch32: Use the shared scopes `CodeBufferCheckScope` and `EmissionCheckScope`.

This patch continues toward the goal of unifying code-generation scopes for all
backends.

The new scopes differ from the existing AArch32 mechanisms, so a few tests for
literal and veneer pools needed to be updated.

The patch also adds AArch32 tests for the new scopes.

Change-Id: Ia6a93e6e860b47e703b6c9034fefa405810c18a0
/external/vixl/src/aarch32/assembler-aarch32.h
d17e348e16bf0d6eca4f9ea0e935c7544098d045 23-Nov-2016 Vincent Belliard <vincent.belliard@arm.com> Add unpredictable conditions for ADC_i, ADC_r, ADC_rr, ADD_ADR, ADD_i, ADD_r, ADD_rr, ADD_SP_i, ADD_SP_r, ADR and MOV_i.

Change-Id: I2d0255c352881d855b375db65794ee7f282b1cfe
/external/vixl/src/aarch32/assembler-aarch32.h
b44f7a6ee7f9cd194cde9577f5a941f2864795a4 17-Nov-2016 Pierre Langlois <pierre.langlois@arm.com> Remove delegate support for load/store exclusive and pld

This patch removes delegates that were trying to handle the following
instructions:

- pld
- pldw
- pli

- lda
- ldab
- ldaex
- ldaexb
- ldaexh
- ldah
- ldrex
- ldrexb
- ldrexh
- stl
- stlb
- stlh

- ldaexd
- ldrexd
- stlex
- stlexb
- stlexh
- strex
- strexb
- strexh

- stlexd
- strexd

Instead, the user will get an error if they are used incorrectly. We no
longer try to make them work with addressing modes that are not already
supported by the instruction itself.

Instead of having the delegates use VIXL_ABORT_WITH_MSG directly, I've
changed the `UnimplementedDelegate` method to print the message
"Ill-formed '{}' instruction.". To do this, we now have a
`ToCString(InstructionType)` function to print instructions, defined in
a new file "aarch32/constants-aarch32.cc".

Change-Id: I4e1f955576b88aae3edaf4dad157f11d4755e6ca
/external/vixl/src/aarch32/assembler-aarch32.h
7827144797ee5ebfa0b574f45ad8ff235f919304 08-Nov-2016 Vincent Belliard <vincent.belliard@arm.com> Allow a label which is in the veneer pool to be bound with 'bind'.

Change-Id: I1e0d03498ec86ed23d94ef1db2d2adc5b73ef984
/external/vixl/src/aarch32/assembler-aarch32.h
e42218c6ca969b7d4032da978fb05f06641df100 19-Oct-2016 Vincent Belliard <vincent.belliard@arm.com> Make bind and place more consistent.

Change-Id: I1743511e3c6f995f05cded38347a015c198b1fb9
/external/vixl/src/aarch32/assembler-aarch32.h
7f4a230cbb795755d24e1d4658e99a7ccf1eb24b 13-Oct-2016 Vincent Belliard <vincent.belliard@arm.com> Add instruction information to the DisassemblerStream.

Change-Id: I2da5371c86c000caef7cf82db8f5440184c8d0a3
/external/vixl/src/aarch32/assembler-aarch32.h
6a049f97861bd71c69d81f643e42308d28c5de31 21-Sep-2016 Alexandre Rames <alexandre.rames@linaro.org> Unify the `Assembler` helpers related to the code buffer.

A few helpers in `Assembler` classes that were simply wrappers around
`CodeBuffer` methods have been deprecated, and should be replaced by calls to
the `CodeBuffer` methods.

Change-Id: I72608c8c1f1f2823c58c8f6de042e932abe12629
/external/vixl/src/aarch32/assembler-aarch32.h
919e3fe28a5024c53ede42922092bbc32e89dcb8 14-Oct-2016 Alexandre Rames <alexandre.rames@linaro.org> Create a base class for assemblers.

This base class defines an interface that assemblers must adhere to.
For now, we use it to hold the code buffer.

Change-Id: I487430bb98c7044e57b348cffa1e74a2a4c8026f
/external/vixl/src/aarch32/assembler-aarch32.h
f5348cedd702124c90fc75e75d0195e2e485c620 22-Sep-2016 Pierre Langlois <pierre.langlois@arm.com> Remove implicit 64 to 32 bit narrowing

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
/external/vixl/src/aarch32/assembler-aarch32.h
31dd2ae90d5e82871667fbf3ee2697a155e7c3ac 05-Jul-2016 Alex Gilday <Alexander.Gilday2@arm.com> Correctly allocate executable memory in CodeBuffer

CodeBuffer allocates memory that is executable via an ExecuteMemory
function.

Change-Id: Ib2dca824e9edd3144694cfac627becd35dd48e3c
/external/vixl/src/aarch32/assembler-aarch32.h
753bb5554d5832fbd470a460b0c5f839c0f51201 20-Sep-2016 Alexandre Rames <alexandre.rames@linaro.org> AArch32: Remove the empty `Instructions` base class for `Assembler`.

Change-Id: Ic6c00c0ad98988ede47d3cad8426291972c59c0c
/external/vixl/src/aarch32/assembler-aarch32.h
bf01e787b9ca4ff28b8c4d4355fd575c4ac81dfa 14-Sep-2016 Anton Kirilov <anton.kirilov@linaro.org> Add some missing header file inclusions.

Change-Id: I8f7497ea6921b655e9996ab7843793f12b27eeed
/external/vixl/src/aarch32/assembler-aarch32.h
8885c17bce593f82cf90c086da242e52943c50ef 24-Aug-2016 Vincent Belliard <vincent.belliard@arm.com> forbid direct use of assembler from the macro-assembler

Change-Id: Ic00c9c72e9aed7efaab72a6fd6838bbd0bda6531
/external/vixl/src/aarch32/assembler-aarch32.h
1e85b7f2e8ad2bfb233de29405aade635ed207ce 05-Aug-2016 Pierre Langlois <pierre.langlois@arm.com> Introduce architecture specific guards for the simulator

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
/external/vixl/src/aarch32/assembler-aarch32.h
979b1d25d9104f3c545a2c5740612b026053b670 29-Jul-2016 Artem Serov <artem.serov@linaro.org> Add GetStartAddress helper function.

Change-Id: I957db991bc84493a36eaf89a16b699c907c3479f
/external/vixl/src/aarch32/assembler-aarch32.h
10dae1a549308bddc1931f29754d6a4459f70c9b 27-Jul-2016 Jacob Bramley <jacob.bramley@arm.com> AArch32: Improve the API for selecting the ISA.

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
/external/vixl/src/aarch32/assembler-aarch32.h
294e6f426db143d5409895ff4c755b2b203fc07d 22-Jul-2016 Scott Wakeling <scott.wakeling@linaro.org> AArch32: Add GetSizeOfCodeGenerated() const accessor to Assembler.

Change-Id: I84877dd2c6aa6d0c5755c9dab6235e618bec26b6
/external/vixl/src/aarch32/assembler-aarch32.h
703ff06a087f67fccde24a7ffbc8a2e74a406cb1 11-Jul-2016 Alexandre Rames <alexandre.rames@linaro.org> Aarch64: Rename `allow_simulator_instructions_` to `generate_simulator_code_`.

Change-Id: I72956db90ab3380b5ad62b37d2ed203ec4045931
/external/vixl/src/aarch32/assembler-aarch32.h
d3832965c62a8ad461b9ea9eb0994ca6b0a3da2c 04-Jul-2016 Alexandre Rames <alexandre.rames@linaro.org> Update naming to `aarch32` and `aarch64`.

Change-Id: I40a929b1095ee3e1b2ca5ef879c7006d8b59acc9
/external/vixl/src/aarch32/assembler-aarch32.h