// This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. #include #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32) #include .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)