From 85918049ab25c9a19b9888b1a1455a8b6d749e23 Mon Sep 17 00:00:00 2001 From: James Molloy Date: Mon, 12 May 2014 15:13:39 +0000 Subject: [PATCH] [ARM64-BE] Add sphinx documentation for the ARM64 NEON implementation. There are some interesting decisions based on non-obvious rationale in the ARM64-BE NEON implementation - decent documentation is definitely required. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208577 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/ARM-BE-bitcastfail.png | Bin 0 -> 29373 bytes docs/ARM-BE-bitcastsuccess.png | Bin 0 -> 41468 bytes docs/ARM-BE-ld1.png | Bin 0 -> 22561 bytes docs/ARM-BE-ldr.png | Bin 0 -> 16516 bytes docs/BigEndianNEON.rst | 205 +++++++++++++++++++++++++++++++++++++++++ docs/index.rst | 6 ++ 6 files changed, 211 insertions(+) create mode 100644 docs/ARM-BE-bitcastfail.png create mode 100644 docs/ARM-BE-bitcastsuccess.png create mode 100644 docs/ARM-BE-ld1.png create mode 100644 docs/ARM-BE-ldr.png create mode 100644 docs/BigEndianNEON.rst diff --git a/docs/ARM-BE-bitcastfail.png b/docs/ARM-BE-bitcastfail.png new file mode 100644 index 0000000000000000000000000000000000000000..0c83f0be90e0c4871ea8a1f9afb6cf84d82c28de GIT binary patch literal 29373 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®N$ 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 F{{S2*>*fFe literal 0 HcmV?d00001 diff --git a/docs/ARM-BE-bitcastsuccess.png b/docs/ARM-BE-bitcastsuccess.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3414d36b293a3f72d1e4a83934d5b47c0d3ff4 GIT binary patch literal 41468 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 literal 0 HcmV?d00001 diff --git a/docs/ARM-BE-ld1.png b/docs/ARM-BE-ld1.png new file mode 100644 index 0000000000000000000000000000000000000000..f58c99dd9da39d264e097b087c8a91300180aca2 GIT binary patch literal 22561 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 literal 0 HcmV?d00001 diff --git a/docs/ARM-BE-ldr.png b/docs/ARM-BE-ldr.png new file mode 100644 index 0000000000000000000000000000000000000000..73db07e91ead9b6c750e83d3565c684708afe1d5 GIT binary patch literal 16516 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 assembly +--------------------------------------- + +It may be helpful first to illustrate how C-level ARM NEON intrinsics are lowered to instructions. + +This trivial C function takes a vector of four ints and sets the zero'th lane to the value "42":: + + #include + int32x4_t f(int32x4_t p) { + return vsetq_lane_s32(42, p, 0); + } + +arm_neon.h intrinsics generate "generic" IR where possible (that is, normal IR instructions not ``llvm.arm.neon.*`` intrinsic calls). The above generates:: + + define <4 x i32> @f(<4 x i32> %p) { + %vset_lane = insertelement <4 x i32> %p, i32 42, i32 0 + ret <4 x i32> %vset_lane + } + +Which then becomes the following trivial assembly:: + + f: // @f + movz w8, #0x2a + ins v0.s[0], w8 + ret + +Problem +======= + +The main problem is how vectors are represented in memory and in registers. + +First, a recap. The "endianness" of an item affects its representation in memory only. In a register, a number is just a sequence of bits - 64 bits in the case of AArch64 general purpose registers. Memory, however, is a sequence of addressable units of 8 bits in size. Any number greater than 8 bits must therefore be split up into 8-bit chunks, and endianness describes the order in which these chunks are laid out in memory. + +A "little endian" layout has the least significant byte first (lowest in memory address). A "big endian" layout has the *most* significant byte first. This means that when loading an item from big endian memory, the lowest 8-bits in memory must go in the most significant 8-bits, and so forth. + +``LDR`` and ``LD1`` +=================== + +.. figure:: ARM-BE-ldr.png + :align: right + + Big endian vector load using ``LDR``. + + +A vector is a consecutive sequence of items that are operated on simultaneously. To load a 64-bit vector, 64 bits need to be read from memory. In little endian mode, we can do this by just performing a 64-bit load - ``LDR q0, [foo]``. However if we try this in big endian mode, because of the byte swapping the lane indices end up being swapped! The zero'th item as layed out in memory becomes the n'th lane in the vector. + +.. figure:: ARM-BE-ld1.png + :align: right + + Big endian vector load using ``LD1``. Note that the lanes retain the correct ordering. + + +Because of this, the instruction ``LD1`` performs a vector load but performs byte swapping not on the entire 64 bits, but on the individual items within the vector. This means that the register content is the same as it would have been on a little endian system. + +It may seem that ``LD1`` should suffice to peform vector loads on a big endian machine. However there are pros and cons to the two approaches that make it less than simple which register format to pick. + +There are two options: + + 1. The content of a vector register is the same *as if* it had been loaded with an ``LDR`` instruction. + 2. The content of a vector register is the same *as if* it had been loaded with an ``LD1`` instruction. + +Because ``LD1 == LDR + REV`` and similarly ``LDR == LD1 + REV`` (on a big endian system), we can simulate either type of load with the other type of load plus a ``REV`` instruction. So we're not deciding which instructions to use, but which format to use (which will then influence which instruction is best to use). + +.. The 'clearer' container is required to make the following section header come after the floated + images above. +.. container:: clearer + + Note that throughout this section we only mention loads. Stores have exactly the same problems as their associated loads, so have been skipped for brevity. + + +Considerations +============== + +LLVM IR Lane ordering +--------------------- + +LLVM IR has first class vector types. In LLVM IR, the zero'th element of a vector resides at the lowest memory address. The optimizer relies on this property in certain areas, for example when concatenating vectors together. The intention is for arrays and vectors to have identical memory layouts - ``[4 x i8]`` and ``<4 x i8>`` should be represented the same in memory. Without this property there would be many special cases that the optimizer would have the cleverly handle. + +Use of ``LDR`` would break this lane ordering property. This doesn't preclude the use of ``LDR``, but we would have to do one of two things: + + 1. Insert a ``REV`` instruction to reverse the lane order after every ``LDR``. + 2. Disable all optimizations that rely on lane layout, and for every access to an individual lane (``insertelement``/``extractelement``/``shufflevector``) reverse the lane index. + +AAPCS +----- + +The ARM procedure call standard (AAPCS) defines the ABI for passing vectors between functions in registers. It states: + + When a short vector is transferred between registers and memory it is treated as an opaque object. That is a short vector is stored in memory as if it were stored with a single ``STR`` of the entire register; a short vector is loaded from memory using the corresponding ``LDR`` instruction. On a little-endian system this means that element 0 will always contain the lowest addressed element of a short vector; on a big-endian system element 0 will contain the highest-addressed element of a short vector. + + -- Procedure Call Standard for the ARM 64-bit Architecture (AArch64), 4.1.2 Short Vectors + +The use of ``LDR`` and ``STR`` as the ABI defines has at least one advantage over ``LD1`` and ``ST1``. ``LDR`` and ``STR`` are oblivious to the size of the individual lanes of a vector. ``LD1`` and ``ST1`` are not - the lane size is encoded within them. This is important across an ABI boundary, because it would become necessary to know the lane width the callee expects. Consider the following code: + +.. code-block:: c + + + void callee(uint32x2_t v) { + ... + } + + + extern void callee(uint32x2_t); + void caller() { + callee(...); + } + +If ``callee`` changed its signature to ``uint16x4_t``, which is equivalent in register content, if we passed as ``LD1`` we'd break this code until ``caller`` was updated and recompiled. + +There is an argument that if the signatures of the two functions are different then the behaviour should be undefined. But there may be functions that are agnostic to the lane layout of the vector, and treating the vector as an opaque value (just loading it and storing it) would be impossible without a common format across ABI boundaries. + +So to preserve ABI compatibility, we need to use the ``LDR`` lane layout across function calls. + +Alignment +--------- + +In strict alignment mode, ``LDR qX`` requires its address to be 128-bit aligned, whereas ``LD1`` only requires it to be as aligned as the lane size. If we canonicalised on using ``LDR``, we'd still need to use ``LD1`` in some places to avoid alignment faults (the result of the ``LD1`` would then need to be reversed with ``REV``). + +Most operating systems however do not run with alignment faults enabled, so this is often not an issue. + +Summary +------- + +The following table summarises the instructions that are required to be emitted for each property mentioned above for each of the two solutions. + ++-------------------------------+-------------------------------+---------------------+ +| | ``LDR`` layout | ``LD1`` layout | ++===============================+===============================+=====================+ +| Lane ordering | ``LDR + REV`` | ``LD1`` | ++-------------------------------+-------------------------------+---------------------+ +| AAPCS | ``LDR`` | ``LD1 + REV`` | ++-------------------------------+-------------------------------+---------------------+ +| Alignment for strict mode | ``LDR`` / ``LD1 + REV`` | ``LD1`` | ++-------------------------------+-------------------------------+---------------------+ + +Neither approach is perfect, and choosing one boils down to choosing the lesser of two evils. The issue with lane ordering, it was decided, would have to change target-agnostic compiler passes and would result in a strange IR in which lane indices were reversed. It was decided that this was worse than the changes that would have to be made to support ``LD1``, so ``LD1`` was chosen as the canonical vector load instruction (and by inference, ``ST1`` for vector stores). + +Implementation +============== + +There are 3 parts to the implementation: + + 1. Predicate ``LDR`` and ``STR`` instructions so that they are never allowed to be selected to generate vector loads and stores. The exception is one-lane vectors [1]_ - these by definition cannot have lane ordering problems so are fine to use ``LDR``/``STR``. + + 2. Create code generation patterns for bitconverts that create ``REV`` instructions. + + 3. Make sure appropriate bitconverts are created so that vector values get passed over call boundaries as 1-element vectors (which is the same as if they were loaded with ``LDR``). + +Bitconverts +----------- + +.. image:: ARM-BE-bitcastfail.png + :align: right + +The main problem with the ``LD1`` solution is dealing with bitconverts (or bitcasts, or reinterpret casts). These are pseudo instructions that only change the compiler's interpretation of data, not the underlying data itself. A requirement is that if data is loaded and then saved again (called a "round trip"), the memory contents should be the same after the store as before the load. If a vector is loaded and is then bitconverted to a different vector type before storing, the round trip will currently be broken. + +Take for example this code sequence:: + + %0 = load <4 x i32> %x + %1 = bitcast <4 x i32> %0 to <2 x i64> + store <2 x i64> %1, <2 x i64>* %y + +This would produce a code sequence such as that in the figure on the right. The mismatched ``LD1`` and ``ST1`` cause the stored data to differ from the loaded data. + +.. container:: clearer + + When we see a bitcast from type ``X`` to type ``Y``, what we need to do is to change the in-register representation of the data to be *as if* it had just been loaded by a ``LD1`` of type ``Y``. + +.. image:: ARM-BE-bitcastsuccess.png + :align: right + +Conceptually this is simple - we can insert a ``REV`` undoing the ``LD1`` of type ``X`` (converting the in-register representation to the same as if it had been loaded by ``LDR``) and then insert another ``REV`` to change the representation to be as if it had been loaded by an ``LD1`` of type ``Y``. + +For the previous example, this would be:: + + LD1 v0.4s, [x] + + REV64 v0.4s, v0.4s // There is no REV128 instruction, so it must be synthesizedcd + EXT v0.16b, v0.16b, v0.16b, #8 // with a REV64 then an EXT to swap the two 64-bit elements. + + REV64 v0.2d, v0.2d + EXT v0.16b, v0.16b, v0.16b, #8 + + ST1 v0.2d, [y] + +It turns out that these ``REV`` pairs can, in almost all cases, be squashed together into a single ``REV``. For the example above, a ``REV128 4s`` + ``REV128 2d`` is actually a ``REV64 4s``, as shown in the figure on the right. + +.. [1] One lane vectors may seem useless as a concept but they serve to distinguish between values held in general purpose registers and values held in NEON/VFP registers. For example, an ``i64`` would live in an ``x`` register, but ``<1 x i64>`` would live in a ``d`` register. + diff --git a/docs/index.rst b/docs/index.rst index 93a160028be..1d4fbd9d34d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -237,6 +237,7 @@ For API clients and LLVM developers. NVPTXUsage StackMaps InAlloca + BigEndianNEON :doc:`WritingAnLLVMPass` Information on how to write LLVM transformations and analyses. @@ -319,6 +320,11 @@ For API clients and LLVM developers. LLVM support for mapping instruction addresses to the location of values and allowing code to be patched. +:doc:`BigEndianNEON` + LLVM's support for generating NEON instructions on big endian ARM targets is + somewhat nonintuitive. This document explains the implementation and rationale. + + Development Process Documentation ================================= -- 2.11.0