Files
cli/vendor/aws-lc-sys/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/rndr-armv8.S

40 lines
1.1 KiB
ArmAsm

// This file is generated from a similarly-named Perl script in the BoringSSL
// source tree. Do not edit by hand.
#include <openssl/asm_base.h>
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32)
#include <openssl/arm_arch.h>
.arch armv8-a
.text
# int CRYPTO_rndr_multiple8(uint8_t *out, const size_t len)
.globl CRYPTO_rndr_multiple8
.def CRYPTO_rndr_multiple8
.type 32
.endef
.align 4
CRYPTO_rndr_multiple8:
cbz x1, Lrndr_multiple8_error // len = 0 is not supported
Lrndr_multiple8_loop:
mrs x2, s3_3_c2_c4_0 // rndr instruction https://developer.arm.com/documentation/ddi0601/2024-09/Index-by-Encoding
cbz x2, Lrndr_multiple8_error // Check if rndr failed
str x2, [x0], #8 // Copy 8 bytes to *out and increment pointer by 8
sub x1, x1, #8
cbz x1, Lrndr_multiple8_done // If multiple of 8 this will be 0 eventually
b Lrndr_multiple8_loop
Lrndr_multiple8_done:
mov x0, #1 // Return value success
ret
Lrndr_multiple8_error:
mov x0, #0 // Return value error
ret
#endif // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32)