Lines Matching +full:- +full:- +full:single +full:- +full:branch

8  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
33 * https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#alignment
34 * specifies that on Windows-on-Arm64, unaligned access is safe (except for uncached
47 * https://www.iar.com/knowledge/support/technical-notes/compiler/accessing-unaligned-data
48 * This results in a single load / store instruction (if unaligned access is supported).
58 * gcc may generate a branch to memcpy for calls like `memcpy(dest, src, 4)` rather than
61 * This is architecture dependent: x86-64 seems fine even with old gcc; 32-bit Arm
65 * For gcc < 6.3.0, this issue happens at -O0
68 * For gcc 4.x, this implementation will generate byte-by-byte loads even if unaligned access is
71 * For performance (and code size, in some cases), we want to avoid the branch and just generate
72 * some inline load/store instructions since the access is small and constant-size.
77 * https://gcc.gnu.org/onlinedocs/gcc-4.5.4/gcc/Variable-Attributes.html
123 r = p16->x; in mbedtls_get_unaligned_uint16()
149 p16->x = x; in mbedtls_put_unaligned_uint16()
175 r = p32->x; in mbedtls_get_unaligned_uint32()
201 p32->x = x; in mbedtls_put_unaligned_uint32()
227 r = p64->x; in mbedtls_get_unaligned_uint64()
253 p64->x = x; in mbedtls_put_unaligned_uint64()
265 * Given a multi-byte integer \p x, MBEDTLS_BYTE_n retrieves the n-th
278 * Detect GCC built-in byteswap routines
291 * Detect Clang built-in byteswap routines
306 * Detect MSVC built-in byteswap routines
320 /* Detect armcc built-in byteswap routine */
322 #if defined(__ARM_ACLE) /* ARM Compiler 6 - earlier versions don't need a header */
328 /* Detect IAR built-in byteswap routine */
339 * Where compiler built-ins are not present, fall back to C code that the
405 * big-endian order (MSB first).
419 * Put in memory a 32 bits unsigned integer in big-endian order.
441 * little-endian order (LSB first).
456 * Put in memory a 32 bits unsigned integer in little-endian order.
478 * little-endian order (LSB first).
492 * Put in memory a 16 bits unsigned integer in little-endian order.
514 * big-endian order (MSB first).
528 * Put in memory a 16 bits unsigned integer in big-endian order.
550 * big-endian order (MSB first).
565 * Put in memory a 24 bits unsigned integer in big-endian order.
582 * little-endian order (LSB first).
597 * Put in memory a 24 bits unsigned integer in little-endian order.
614 * big-endian order (MSB first).
628 * Put in memory a 64 bits unsigned integer in big-endian order.
650 * little-endian order (LSB first).
664 * Put in memory a 64 bits unsigned integer in little-endian order.