[llvm] cfbed2c - [Support] Import SipHash c reference implementation. (#94393)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 14 16:56:08 PDT 2024
Author: Ahmed Bougacha
Date: 2024-06-14T16:56:04-07:00
New Revision: cfbed2c0e6110878e6174067e2fb8013fc512620
URL: https://github.com/llvm/llvm-project/commit/cfbed2c0e6110878e6174067e2fb8013fc512620
DIFF: https://github.com/llvm/llvm-project/commit/cfbed2c0e6110878e6174067e2fb8013fc512620.diff
LOG: [Support] Import SipHash c reference implementation. (#94393)
This brings the unmodified SipHash reference implementation:
https://github.com/veorq/SipHash
which has been very graciously licensed under our llvm license
(Apache-2.0 WITH LLVM-exception) by Jean-Philippe Aumasson.
SipHash is a lightweight hash function optimized for speed on short
messages. We use it as part of the AArch64 ptrauth ABI (in arm64e and
ELF PAuth) to generate discriminators based on language identifiers and
mangled names.
This commit brings the unmodified reference implementation and tests
as of f26d35e, specifically siphash.c and vectors.h, as SipHash.cpp and
SipHashTest.cpp.
Next, we will integrate it properly into libSupport, with a wrapping API
suited for the ptrauth use-case.
Added:
llvm/lib/Support/SipHash.cpp
llvm/unittests/Support/SipHashTest.cpp
Modified:
llvm/lib/Support/CMakeLists.txt
llvm/unittests/Support/CMakeLists.txt
Removed:
################################################################################
diff --git a/llvm/lib/Support/CMakeLists.txt b/llvm/lib/Support/CMakeLists.txt
index 4d8ce329029d0..7632f33afce7d 100644
--- a/llvm/lib/Support/CMakeLists.txt
+++ b/llvm/lib/Support/CMakeLists.txt
@@ -127,6 +127,9 @@ endif()
add_subdirectory(BLAKE3)
+# Temporarily ignore SipHash.cpp before we fully integrate it into LLVMSupport.
+set(LLVM_OPTIONAL_SOURCES SipHash.cpp)
+
add_llvm_component_library(LLVMSupport
ABIBreak.cpp
AMDGPUMetadata.cpp
diff --git a/llvm/lib/Support/SipHash.cpp b/llvm/lib/Support/SipHash.cpp
new file mode 100644
index 0000000000000..c6d16e205521d
--- /dev/null
+++ b/llvm/lib/Support/SipHash.cpp
@@ -0,0 +1,185 @@
+/*
+ SipHash reference C implementation
+
+ Copyright (c) 2012-2022 Jean-Philippe Aumasson
+ <jeanphilippe.aumasson at gmail.com>
+ Copyright (c) 2012-2014 Daniel J. Bernstein <djb at cr.yp.to>
+
+ To the extent possible under law, the author(s) have dedicated all copyright
+ and related and neighboring rights to this software to the public domain
+ worldwide. This software is distributed without any warranty.
+
+ You should have received a copy of the CC0 Public Domain Dedication along
+ with
+ this software. If not, see
+ <http://creativecommons.org/publicdomain/zero/1.0/>.
+ */
+
+#include "siphash.h"
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+
+/* default: SipHash-2-4 */
+#ifndef cROUNDS
+#define cROUNDS 2
+#endif
+#ifndef dROUNDS
+#define dROUNDS 4
+#endif
+
+#define ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b))))
+
+#define U32TO8_LE(p, v) \
+ (p)[0] = (uint8_t)((v)); \
+ (p)[1] = (uint8_t)((v) >> 8); \
+ (p)[2] = (uint8_t)((v) >> 16); \
+ (p)[3] = (uint8_t)((v) >> 24);
+
+#define U64TO8_LE(p, v) \
+ U32TO8_LE((p), (uint32_t)((v))); \
+ U32TO8_LE((p) + 4, (uint32_t)((v) >> 32));
+
+#define U8TO64_LE(p) \
+ (((uint64_t)((p)[0])) | ((uint64_t)((p)[1]) << 8) | \
+ ((uint64_t)((p)[2]) << 16) | ((uint64_t)((p)[3]) << 24) | \
+ ((uint64_t)((p)[4]) << 32) | ((uint64_t)((p)[5]) << 40) | \
+ ((uint64_t)((p)[6]) << 48) | ((uint64_t)((p)[7]) << 56))
+
+#define SIPROUND \
+ do { \
+ v0 += v1; \
+ v1 = ROTL(v1, 13); \
+ v1 ^= v0; \
+ v0 = ROTL(v0, 32); \
+ v2 += v3; \
+ v3 = ROTL(v3, 16); \
+ v3 ^= v2; \
+ v0 += v3; \
+ v3 = ROTL(v3, 21); \
+ v3 ^= v0; \
+ v2 += v1; \
+ v1 = ROTL(v1, 17); \
+ v1 ^= v2; \
+ v2 = ROTL(v2, 32); \
+ } while (0)
+
+#ifdef DEBUG_SIPHASH
+#include <stdio.h>
+
+#define TRACE \
+ do { \
+ printf("(%3zu) v0 %016" PRIx64 "\n", inlen, v0); \
+ printf("(%3zu) v1 %016" PRIx64 "\n", inlen, v1); \
+ printf("(%3zu) v2 %016" PRIx64 "\n", inlen, v2); \
+ printf("(%3zu) v3 %016" PRIx64 "\n", inlen, v3); \
+ } while (0)
+#else
+#define TRACE
+#endif
+
+/*
+ Computes a SipHash value
+ *in: pointer to input data (read-only)
+ inlen: input data length in bytes (any size_t value)
+ *k: pointer to the key data (read-only), must be 16 bytes
+ *out: pointer to output data (write-only), outlen bytes must be allocated
+ outlen: length of the output in bytes, must be 8 or 16
+*/
+int siphash(const void *in, const size_t inlen, const void *k, uint8_t *out,
+ const size_t outlen) {
+
+ const unsigned char *ni = (const unsigned char *)in;
+ const unsigned char *kk = (const unsigned char *)k;
+
+ assert((outlen == 8) || (outlen == 16));
+ uint64_t v0 = UINT64_C(0x736f6d6570736575);
+ uint64_t v1 = UINT64_C(0x646f72616e646f6d);
+ uint64_t v2 = UINT64_C(0x6c7967656e657261);
+ uint64_t v3 = UINT64_C(0x7465646279746573);
+ uint64_t k0 = U8TO64_LE(kk);
+ uint64_t k1 = U8TO64_LE(kk + 8);
+ uint64_t m;
+ int i;
+ const unsigned char *end = ni + inlen - (inlen % sizeof(uint64_t));
+ const int left = inlen & 7;
+ uint64_t b = ((uint64_t)inlen) << 56;
+ v3 ^= k1;
+ v2 ^= k0;
+ v1 ^= k1;
+ v0 ^= k0;
+
+ if (outlen == 16)
+ v1 ^= 0xee;
+
+ for (; ni != end; ni += 8) {
+ m = U8TO64_LE(ni);
+ v3 ^= m;
+
+ TRACE;
+ for (i = 0; i < cROUNDS; ++i)
+ SIPROUND;
+
+ v0 ^= m;
+ }
+
+ switch (left) {
+ case 7:
+ b |= ((uint64_t)ni[6]) << 48;
+ /* FALLTHRU */
+ case 6:
+ b |= ((uint64_t)ni[5]) << 40;
+ /* FALLTHRU */
+ case 5:
+ b |= ((uint64_t)ni[4]) << 32;
+ /* FALLTHRU */
+ case 4:
+ b |= ((uint64_t)ni[3]) << 24;
+ /* FALLTHRU */
+ case 3:
+ b |= ((uint64_t)ni[2]) << 16;
+ /* FALLTHRU */
+ case 2:
+ b |= ((uint64_t)ni[1]) << 8;
+ /* FALLTHRU */
+ case 1:
+ b |= ((uint64_t)ni[0]);
+ break;
+ case 0:
+ break;
+ }
+
+ v3 ^= b;
+
+ TRACE;
+ for (i = 0; i < cROUNDS; ++i)
+ SIPROUND;
+
+ v0 ^= b;
+
+ if (outlen == 16)
+ v2 ^= 0xee;
+ else
+ v2 ^= 0xff;
+
+ TRACE;
+ for (i = 0; i < dROUNDS; ++i)
+ SIPROUND;
+
+ b = v0 ^ v1 ^ v2 ^ v3;
+ U64TO8_LE(out, b);
+
+ if (outlen == 8)
+ return 0;
+
+ v1 ^= 0xdd;
+
+ TRACE;
+ for (i = 0; i < dROUNDS; ++i)
+ SIPROUND;
+
+ b = v0 ^ v1 ^ v2 ^ v3;
+ U64TO8_LE(out + 8, b);
+
+ return 0;
+}
diff --git a/llvm/unittests/Support/CMakeLists.txt b/llvm/unittests/Support/CMakeLists.txt
index 2718be8450f80..548bdf96c6aca 100644
--- a/llvm/unittests/Support/CMakeLists.txt
+++ b/llvm/unittests/Support/CMakeLists.txt
@@ -3,6 +3,9 @@ set(LLVM_LINK_COMPONENTS
TargetParser
)
+# Temporarily ignore SipHashTest.cpp before we fully integrate it.
+set(LLVM_OPTIONAL_SOURCES SipHashTest.cpp)
+
add_llvm_unittest(SupportTests
AddressRangeTest.cpp
AlignmentTest.cpp
diff --git a/llvm/unittests/Support/SipHashTest.cpp b/llvm/unittests/Support/SipHashTest.cpp
new file mode 100644
index 0000000000000..1a0ca045f8d9d
--- /dev/null
+++ b/llvm/unittests/Support/SipHashTest.cpp
@@ -0,0 +1,2826 @@
+#include <stdint.h>
+
+const uint8_t vectors_sip64[64][8] = {
+ {
+ 0x31,
+ 0x0e,
+ 0x0e,
+ 0xdd,
+ 0x47,
+ 0xdb,
+ 0x6f,
+ 0x72,
+ },
+ {
+ 0xfd,
+ 0x67,
+ 0xdc,
+ 0x93,
+ 0xc5,
+ 0x39,
+ 0xf8,
+ 0x74,
+ },
+ {
+ 0x5a,
+ 0x4f,
+ 0xa9,
+ 0xd9,
+ 0x09,
+ 0x80,
+ 0x6c,
+ 0x0d,
+ },
+ {
+ 0x2d,
+ 0x7e,
+ 0xfb,
+ 0xd7,
+ 0x96,
+ 0x66,
+ 0x67,
+ 0x85,
+ },
+ {
+ 0xb7,
+ 0x87,
+ 0x71,
+ 0x27,
+ 0xe0,
+ 0x94,
+ 0x27,
+ 0xcf,
+ },
+ {
+ 0x8d,
+ 0xa6,
+ 0x99,
+ 0xcd,
+ 0x64,
+ 0x55,
+ 0x76,
+ 0x18,
+ },
+ {
+ 0xce,
+ 0xe3,
+ 0xfe,
+ 0x58,
+ 0x6e,
+ 0x46,
+ 0xc9,
+ 0xcb,
+ },
+ {
+ 0x37,
+ 0xd1,
+ 0x01,
+ 0x8b,
+ 0xf5,
+ 0x00,
+ 0x02,
+ 0xab,
+ },
+ {
+ 0x62,
+ 0x24,
+ 0x93,
+ 0x9a,
+ 0x79,
+ 0xf5,
+ 0xf5,
+ 0x93,
+ },
+ {
+ 0xb0,
+ 0xe4,
+ 0xa9,
+ 0x0b,
+ 0xdf,
+ 0x82,
+ 0x00,
+ 0x9e,
+ },
+ {
+ 0xf3,
+ 0xb9,
+ 0xdd,
+ 0x94,
+ 0xc5,
+ 0xbb,
+ 0x5d,
+ 0x7a,
+ },
+ {
+ 0xa7,
+ 0xad,
+ 0x6b,
+ 0x22,
+ 0x46,
+ 0x2f,
+ 0xb3,
+ 0xf4,
+ },
+ {
+ 0xfb,
+ 0xe5,
+ 0x0e,
+ 0x86,
+ 0xbc,
+ 0x8f,
+ 0x1e,
+ 0x75,
+ },
+ {
+ 0x90,
+ 0x3d,
+ 0x84,
+ 0xc0,
+ 0x27,
+ 0x56,
+ 0xea,
+ 0x14,
+ },
+ {
+ 0xee,
+ 0xf2,
+ 0x7a,
+ 0x8e,
+ 0x90,
+ 0xca,
+ 0x23,
+ 0xf7,
+ },
+ {
+ 0xe5,
+ 0x45,
+ 0xbe,
+ 0x49,
+ 0x61,
+ 0xca,
+ 0x29,
+ 0xa1,
+ },
+ {
+ 0xdb,
+ 0x9b,
+ 0xc2,
+ 0x57,
+ 0x7f,
+ 0xcc,
+ 0x2a,
+ 0x3f,
+ },
+ {
+ 0x94,
+ 0x47,
+ 0xbe,
+ 0x2c,
+ 0xf5,
+ 0xe9,
+ 0x9a,
+ 0x69,
+ },
+ {
+ 0x9c,
+ 0xd3,
+ 0x8d,
+ 0x96,
+ 0xf0,
+ 0xb3,
+ 0xc1,
+ 0x4b,
+ },
+ {
+ 0xbd,
+ 0x61,
+ 0x79,
+ 0xa7,
+ 0x1d,
+ 0xc9,
+ 0x6d,
+ 0xbb,
+ },
+ {
+ 0x98,
+ 0xee,
+ 0xa2,
+ 0x1a,
+ 0xf2,
+ 0x5c,
+ 0xd6,
+ 0xbe,
+ },
+ {
+ 0xc7,
+ 0x67,
+ 0x3b,
+ 0x2e,
+ 0xb0,
+ 0xcb,
+ 0xf2,
+ 0xd0,
+ },
+ {
+ 0x88,
+ 0x3e,
+ 0xa3,
+ 0xe3,
+ 0x95,
+ 0x67,
+ 0x53,
+ 0x93,
+ },
+ {
+ 0xc8,
+ 0xce,
+ 0x5c,
+ 0xcd,
+ 0x8c,
+ 0x03,
+ 0x0c,
+ 0xa8,
+ },
+ {
+ 0x94,
+ 0xaf,
+ 0x49,
+ 0xf6,
+ 0xc6,
+ 0x50,
+ 0xad,
+ 0xb8,
+ },
+ {
+ 0xea,
+ 0xb8,
+ 0x85,
+ 0x8a,
+ 0xde,
+ 0x92,
+ 0xe1,
+ 0xbc,
+ },
+ {
+ 0xf3,
+ 0x15,
+ 0xbb,
+ 0x5b,
+ 0xb8,
+ 0x35,
+ 0xd8,
+ 0x17,
+ },
+ {
+ 0xad,
+ 0xcf,
+ 0x6b,
+ 0x07,
+ 0x63,
+ 0x61,
+ 0x2e,
+ 0x2f,
+ },
+ {
+ 0xa5,
+ 0xc9,
+ 0x1d,
+ 0xa7,
+ 0xac,
+ 0xaa,
+ 0x4d,
+ 0xde,
+ },
+ {
+ 0x71,
+ 0x65,
+ 0x95,
+ 0x87,
+ 0x66,
+ 0x50,
+ 0xa2,
+ 0xa6,
+ },
+ {
+ 0x28,
+ 0xef,
+ 0x49,
+ 0x5c,
+ 0x53,
+ 0xa3,
+ 0x87,
+ 0xad,
+ },
+ {
+ 0x42,
+ 0xc3,
+ 0x41,
+ 0xd8,
+ 0xfa,
+ 0x92,
+ 0xd8,
+ 0x32,
+ },
+ {
+ 0xce,
+ 0x7c,
+ 0xf2,
+ 0x72,
+ 0x2f,
+ 0x51,
+ 0x27,
+ 0x71,
+ },
+ {
+ 0xe3,
+ 0x78,
+ 0x59,
+ 0xf9,
+ 0x46,
+ 0x23,
+ 0xf3,
+ 0xa7,
+ },
+ {
+ 0x38,
+ 0x12,
+ 0x05,
+ 0xbb,
+ 0x1a,
+ 0xb0,
+ 0xe0,
+ 0x12,
+ },
+ {
+ 0xae,
+ 0x97,
+ 0xa1,
+ 0x0f,
+ 0xd4,
+ 0x34,
+ 0xe0,
+ 0x15,
+ },
+ {
+ 0xb4,
+ 0xa3,
+ 0x15,
+ 0x08,
+ 0xbe,
+ 0xff,
+ 0x4d,
+ 0x31,
+ },
+ {
+ 0x81,
+ 0x39,
+ 0x62,
+ 0x29,
+ 0xf0,
+ 0x90,
+ 0x79,
+ 0x02,
+ },
+ {
+ 0x4d,
+ 0x0c,
+ 0xf4,
+ 0x9e,
+ 0xe5,
+ 0xd4,
+ 0xdc,
+ 0xca,
+ },
+ {
+ 0x5c,
+ 0x73,
+ 0x33,
+ 0x6a,
+ 0x76,
+ 0xd8,
+ 0xbf,
+ 0x9a,
+ },
+ {
+ 0xd0,
+ 0xa7,
+ 0x04,
+ 0x53,
+ 0x6b,
+ 0xa9,
+ 0x3e,
+ 0x0e,
+ },
+ {
+ 0x92,
+ 0x59,
+ 0x58,
+ 0xfc,
+ 0xd6,
+ 0x42,
+ 0x0c,
+ 0xad,
+ },
+ {
+ 0xa9,
+ 0x15,
+ 0xc2,
+ 0x9b,
+ 0xc8,
+ 0x06,
+ 0x73,
+ 0x18,
+ },
+ {
+ 0x95,
+ 0x2b,
+ 0x79,
+ 0xf3,
+ 0xbc,
+ 0x0a,
+ 0xa6,
+ 0xd4,
+ },
+ {
+ 0xf2,
+ 0x1d,
+ 0xf2,
+ 0xe4,
+ 0x1d,
+ 0x45,
+ 0x35,
+ 0xf9,
+ },
+ {
+ 0x87,
+ 0x57,
+ 0x75,
+ 0x19,
+ 0x04,
+ 0x8f,
+ 0x53,
+ 0xa9,
+ },
+ {
+ 0x10,
+ 0xa5,
+ 0x6c,
+ 0xf5,
+ 0xdf,
+ 0xcd,
+ 0x9a,
+ 0xdb,
+ },
+ {
+ 0xeb,
+ 0x75,
+ 0x09,
+ 0x5c,
+ 0xcd,
+ 0x98,
+ 0x6c,
+ 0xd0,
+ },
+ {
+ 0x51,
+ 0xa9,
+ 0xcb,
+ 0x9e,
+ 0xcb,
+ 0xa3,
+ 0x12,
+ 0xe6,
+ },
+ {
+ 0x96,
+ 0xaf,
+ 0xad,
+ 0xfc,
+ 0x2c,
+ 0xe6,
+ 0x66,
+ 0xc7,
+ },
+ {
+ 0x72,
+ 0xfe,
+ 0x52,
+ 0x97,
+ 0x5a,
+ 0x43,
+ 0x64,
+ 0xee,
+ },
+ {
+ 0x5a,
+ 0x16,
+ 0x45,
+ 0xb2,
+ 0x76,
+ 0xd5,
+ 0x92,
+ 0xa1,
+ },
+ {
+ 0xb2,
+ 0x74,
+ 0xcb,
+ 0x8e,
+ 0xbf,
+ 0x87,
+ 0x87,
+ 0x0a,
+ },
+ {
+ 0x6f,
+ 0x9b,
+ 0xb4,
+ 0x20,
+ 0x3d,
+ 0xe7,
+ 0xb3,
+ 0x81,
+ },
+ {
+ 0xea,
+ 0xec,
+ 0xb2,
+ 0xa3,
+ 0x0b,
+ 0x22,
+ 0xa8,
+ 0x7f,
+ },
+ {
+ 0x99,
+ 0x24,
+ 0xa4,
+ 0x3c,
+ 0xc1,
+ 0x31,
+ 0x57,
+ 0x24,
+ },
+ {
+ 0xbd,
+ 0x83,
+ 0x8d,
+ 0x3a,
+ 0xaf,
+ 0xbf,
+ 0x8d,
+ 0xb7,
+ },
+ {
+ 0x0b,
+ 0x1a,
+ 0x2a,
+ 0x32,
+ 0x65,
+ 0xd5,
+ 0x1a,
+ 0xea,
+ },
+ {
+ 0x13,
+ 0x50,
+ 0x79,
+ 0xa3,
+ 0x23,
+ 0x1c,
+ 0xe6,
+ 0x60,
+ },
+ {
+ 0x93,
+ 0x2b,
+ 0x28,
+ 0x46,
+ 0xe4,
+ 0xd7,
+ 0x06,
+ 0x66,
+ },
+ {
+ 0xe1,
+ 0x91,
+ 0x5f,
+ 0x5c,
+ 0xb1,
+ 0xec,
+ 0xa4,
+ 0x6c,
+ },
+ {
+ 0xf3,
+ 0x25,
+ 0x96,
+ 0x5c,
+ 0xa1,
+ 0x6d,
+ 0x62,
+ 0x9f,
+ },
+ {
+ 0x57,
+ 0x5f,
+ 0xf2,
+ 0x8e,
+ 0x60,
+ 0x38,
+ 0x1b,
+ 0xe5,
+ },
+ {
+ 0x72,
+ 0x45,
+ 0x06,
+ 0xeb,
+ 0x4c,
+ 0x32,
+ 0x8a,
+ 0x95,
+ },
+};
+const uint8_t vectors_sip128[64][16] = {
+ {
+ 0xa3,
+ 0x81,
+ 0x7f,
+ 0x04,
+ 0xba,
+ 0x25,
+ 0xa8,
+ 0xe6,
+ 0x6d,
+ 0xf6,
+ 0x72,
+ 0x14,
+ 0xc7,
+ 0x55,
+ 0x02,
+ 0x93,
+ },
+ {
+ 0xda,
+ 0x87,
+ 0xc1,
+ 0xd8,
+ 0x6b,
+ 0x99,
+ 0xaf,
+ 0x44,
+ 0x34,
+ 0x76,
+ 0x59,
+ 0x11,
+ 0x9b,
+ 0x22,
+ 0xfc,
+ 0x45,
+ },
+ {
+ 0x81,
+ 0x77,
+ 0x22,
+ 0x8d,
+ 0xa4,
+ 0xa4,
+ 0x5d,
+ 0xc7,
+ 0xfc,
+ 0xa3,
+ 0x8b,
+ 0xde,
+ 0xf6,
+ 0x0a,
+ 0xff,
+ 0xe4,
+ },
+ {
+ 0x9c,
+ 0x70,
+ 0xb6,
+ 0x0c,
+ 0x52,
+ 0x67,
+ 0xa9,
+ 0x4e,
+ 0x5f,
+ 0x33,
+ 0xb6,
+ 0xb0,
+ 0x29,
+ 0x85,
+ 0xed,
+ 0x51,
+ },
+ {
+ 0xf8,
+ 0x81,
+ 0x64,
+ 0xc1,
+ 0x2d,
+ 0x9c,
+ 0x8f,
+ 0xaf,
+ 0x7d,
+ 0x0f,
+ 0x6e,
+ 0x7c,
+ 0x7b,
+ 0xcd,
+ 0x55,
+ 0x79,
+ },
+ {
+ 0x13,
+ 0x68,
+ 0x87,
+ 0x59,
+ 0x80,
+ 0x77,
+ 0x6f,
+ 0x88,
+ 0x54,
+ 0x52,
+ 0x7a,
+ 0x07,
+ 0x69,
+ 0x0e,
+ 0x96,
+ 0x27,
+ },
+ {
+ 0x14,
+ 0xee,
+ 0xca,
+ 0x33,
+ 0x8b,
+ 0x20,
+ 0x86,
+ 0x13,
+ 0x48,
+ 0x5e,
+ 0xa0,
+ 0x30,
+ 0x8f,
+ 0xd7,
+ 0xa1,
+ 0x5e,
+ },
+ {
+ 0xa1,
+ 0xf1,
+ 0xeb,
+ 0xbe,
+ 0xd8,
+ 0xdb,
+ 0xc1,
+ 0x53,
+ 0xc0,
+ 0xb8,
+ 0x4a,
+ 0xa6,
+ 0x1f,
+ 0xf0,
+ 0x82,
+ 0x39,
+ },
+ {
+ 0x3b,
+ 0x62,
+ 0xa9,
+ 0xba,
+ 0x62,
+ 0x58,
+ 0xf5,
+ 0x61,
+ 0x0f,
+ 0x83,
+ 0xe2,
+ 0x64,
+ 0xf3,
+ 0x14,
+ 0x97,
+ 0xb4,
+ },
+ {
+ 0x26,
+ 0x44,
+ 0x99,
+ 0x06,
+ 0x0a,
+ 0xd9,
+ 0xba,
+ 0xab,
+ 0xc4,
+ 0x7f,
+ 0x8b,
+ 0x02,
+ 0xbb,
+ 0x6d,
+ 0x71,
+ 0xed,
+ },
+ {
+ 0x00,
+ 0x11,
+ 0x0d,
+ 0xc3,
+ 0x78,
+ 0x14,
+ 0x69,
+ 0x56,
+ 0xc9,
+ 0x54,
+ 0x47,
+ 0xd3,
+ 0xf3,
+ 0xd0,
+ 0xfb,
+ 0xba,
+ },
+ {
+ 0x01,
+ 0x51,
+ 0xc5,
+ 0x68,
+ 0x38,
+ 0x6b,
+ 0x66,
+ 0x77,
+ 0xa2,
+ 0xb4,
+ 0xdc,
+ 0x6f,
+ 0x81,
+ 0xe5,
+ 0xdc,
+ 0x18,
+ },
+ {
+ 0xd6,
+ 0x26,
+ 0xb2,
+ 0x66,
+ 0x90,
+ 0x5e,
+ 0xf3,
+ 0x58,
+ 0x82,
+ 0x63,
+ 0x4d,
+ 0xf6,
+ 0x85,
+ 0x32,
+ 0xc1,
+ 0x25,
+ },
+ {
+ 0x98,
+ 0x69,
+ 0xe2,
+ 0x47,
+ 0xe9,
+ 0xc0,
+ 0x8b,
+ 0x10,
+ 0xd0,
+ 0x29,
+ 0x93,
+ 0x4f,
+ 0xc4,
+ 0xb9,
+ 0x52,
+ 0xf7,
+ },
+ {
+ 0x31,
+ 0xfc,
+ 0xef,
+ 0xac,
+ 0x66,
+ 0xd7,
+ 0xde,
+ 0x9c,
+ 0x7e,
+ 0xc7,
+ 0x48,
+ 0x5f,
+ 0xe4,
+ 0x49,
+ 0x49,
+ 0x02,
+ },
+ {
+ 0x54,
+ 0x93,
+ 0xe9,
+ 0x99,
+ 0x33,
+ 0xb0,
+ 0xa8,
+ 0x11,
+ 0x7e,
+ 0x08,
+ 0xec,
+ 0x0f,
+ 0x97,
+ 0xcf,
+ 0xc3,
+ 0xd9,
+ },
+ {
+ 0x6e,
+ 0xe2,
+ 0xa4,
+ 0xca,
+ 0x67,
+ 0xb0,
+ 0x54,
+ 0xbb,
+ 0xfd,
+ 0x33,
+ 0x15,
+ 0xbf,
+ 0x85,
+ 0x23,
+ 0x05,
+ 0x77,
+ },
+ {
+ 0x47,
+ 0x3d,
+ 0x06,
+ 0xe8,
+ 0x73,
+ 0x8d,
+ 0xb8,
+ 0x98,
+ 0x54,
+ 0xc0,
+ 0x66,
+ 0xc4,
+ 0x7a,
+ 0xe4,
+ 0x77,
+ 0x40,
+ },
+ {
+ 0xa4,
+ 0x26,
+ 0xe5,
+ 0xe4,
+ 0x23,
+ 0xbf,
+ 0x48,
+ 0x85,
+ 0x29,
+ 0x4d,
+ 0xa4,
+ 0x81,
+ 0xfe,
+ 0xae,
+ 0xf7,
+ 0x23,
+ },
+ {
+ 0x78,
+ 0x01,
+ 0x77,
+ 0x31,
+ 0xcf,
+ 0x65,
+ 0xfa,
+ 0xb0,
+ 0x74,
+ 0xd5,
+ 0x20,
+ 0x89,
+ 0x52,
+ 0x51,
+ 0x2e,
+ 0xb1,
+ },
+ {
+ 0x9e,
+ 0x25,
+ 0xfc,
+ 0x83,
+ 0x3f,
+ 0x22,
+ 0x90,
+ 0x73,
+ 0x3e,
+ 0x93,
+ 0x44,
+ 0xa5,
+ 0xe8,
+ 0x38,
+ 0x39,
+ 0xeb,
+ },
+ {
+ 0x56,
+ 0x8e,
+ 0x49,
+ 0x5a,
+ 0xbe,
+ 0x52,
+ 0x5a,
+ 0x21,
+ 0x8a,
+ 0x22,
+ 0x14,
+ 0xcd,
+ 0x3e,
+ 0x07,
+ 0x1d,
+ 0x12,
+ },
+ {
+ 0x4a,
+ 0x29,
+ 0xb5,
+ 0x45,
+ 0x52,
+ 0xd1,
+ 0x6b,
+ 0x9a,
+ 0x46,
+ 0x9c,
+ 0x10,
+ 0x52,
+ 0x8e,
+ 0xff,
+ 0x0a,
+ 0xae,
+ },
+ {
+ 0xc9,
+ 0xd1,
+ 0x84,
+ 0xdd,
+ 0xd5,
+ 0xa9,
+ 0xf5,
+ 0xe0,
+ 0xcf,
+ 0x8c,
+ 0xe2,
+ 0x9a,
+ 0x9a,
+ 0xbf,
+ 0x69,
+ 0x1c,
+ },
+ {
+ 0x2d,
+ 0xb4,
+ 0x79,
+ 0xae,
+ 0x78,
+ 0xbd,
+ 0x50,
+ 0xd8,
+ 0x88,
+ 0x2a,
+ 0x8a,
+ 0x17,
+ 0x8a,
+ 0x61,
+ 0x32,
+ 0xad,
+ },
+ {
+ 0x8e,
+ 0xce,
+ 0x5f,
+ 0x04,
+ 0x2d,
+ 0x5e,
+ 0x44,
+ 0x7b,
+ 0x50,
+ 0x51,
+ 0xb9,
+ 0xea,
+ 0xcb,
+ 0x8d,
+ 0x8f,
+ 0x6f,
+ },
+ {
+ 0x9c,
+ 0x0b,
+ 0x53,
+ 0xb4,
+ 0xb3,
+ 0xc3,
+ 0x07,
+ 0xe8,
+ 0x7e,
+ 0xae,
+ 0xe0,
+ 0x86,
+ 0x78,
+ 0x14,
+ 0x1f,
+ 0x66,
+ },
+ {
+ 0xab,
+ 0xf2,
+ 0x48,
+ 0xaf,
+ 0x69,
+ 0xa6,
+ 0xea,
+ 0xe4,
+ 0xbf,
+ 0xd3,
+ 0xeb,
+ 0x2f,
+ 0x12,
+ 0x9e,
+ 0xeb,
+ 0x94,
+ },
+ {
+ 0x06,
+ 0x64,
+ 0xda,
+ 0x16,
+ 0x68,
+ 0x57,
+ 0x4b,
+ 0x88,
+ 0xb9,
+ 0x35,
+ 0xf3,
+ 0x02,
+ 0x73,
+ 0x58,
+ 0xae,
+ 0xf4,
+ },
+ {
+ 0xaa,
+ 0x4b,
+ 0x9d,
+ 0xc4,
+ 0xbf,
+ 0x33,
+ 0x7d,
+ 0xe9,
+ 0x0c,
+ 0xd4,
+ 0xfd,
+ 0x3c,
+ 0x46,
+ 0x7c,
+ 0x6a,
+ 0xb7,
+ },
+ {
+ 0xea,
+ 0x5c,
+ 0x7f,
+ 0x47,
+ 0x1f,
+ 0xaf,
+ 0x6b,
+ 0xde,
+ 0x2b,
+ 0x1a,
+ 0xd7,
+ 0xd4,
+ 0x68,
+ 0x6d,
+ 0x22,
+ 0x87,
+ },
+ {
+ 0x29,
+ 0x39,
+ 0xb0,
+ 0x18,
+ 0x32,
+ 0x23,
+ 0xfa,
+ 0xfc,
+ 0x17,
+ 0x23,
+ 0xde,
+ 0x4f,
+ 0x52,
+ 0xc4,
+ 0x3d,
+ 0x35,
+ },
+ {
+ 0x7c,
+ 0x39,
+ 0x56,
+ 0xca,
+ 0x5e,
+ 0xea,
+ 0xfc,
+ 0x3e,
+ 0x36,
+ 0x3e,
+ 0x9d,
+ 0x55,
+ 0x65,
+ 0x46,
+ 0xeb,
+ 0x68,
+ },
+ {
+ 0x77,
+ 0xc6,
+ 0x07,
+ 0x71,
+ 0x46,
+ 0xf0,
+ 0x1c,
+ 0x32,
+ 0xb6,
+ 0xb6,
+ 0x9d,
+ 0x5f,
+ 0x4e,
+ 0xa9,
+ 0xff,
+ 0xcf,
+ },
+ {
+ 0x37,
+ 0xa6,
+ 0x98,
+ 0x6c,
+ 0xb8,
+ 0x84,
+ 0x7e,
+ 0xdf,
+ 0x09,
+ 0x25,
+ 0xf0,
+ 0xf1,
+ 0x30,
+ 0x9b,
+ 0x54,
+ 0xde,
+ },
+ {
+ 0xa7,
+ 0x05,
+ 0xf0,
+ 0xe6,
+ 0x9d,
+ 0xa9,
+ 0xa8,
+ 0xf9,
+ 0x07,
+ 0x24,
+ 0x1a,
+ 0x2e,
+ 0x92,
+ 0x3c,
+ 0x8c,
+ 0xc8,
+ },
+ {
+ 0x3d,
+ 0xc4,
+ 0x7d,
+ 0x1f,
+ 0x29,
+ 0xc4,
+ 0x48,
+ 0x46,
+ 0x1e,
+ 0x9e,
+ 0x76,
+ 0xed,
+ 0x90,
+ 0x4f,
+ 0x67,
+ 0x11,
+ },
+ {
+ 0x0d,
+ 0x62,
+ 0xbf,
+ 0x01,
+ 0xe6,
+ 0xfc,
+ 0x0e,
+ 0x1a,
+ 0x0d,
+ 0x3c,
+ 0x47,
+ 0x51,
+ 0xc5,
+ 0xd3,
+ 0x69,
+ 0x2b,
+ },
+ {
+ 0x8c,
+ 0x03,
+ 0x46,
+ 0x8b,
+ 0xca,
+ 0x7c,
+ 0x66,
+ 0x9e,
+ 0xe4,
+ 0xfd,
+ 0x5e,
+ 0x08,
+ 0x4b,
+ 0xbe,
+ 0xe7,
+ 0xb5,
+ },
+ {
+ 0x52,
+ 0x8a,
+ 0x5b,
+ 0xb9,
+ 0x3b,
+ 0xaf,
+ 0x2c,
+ 0x9c,
+ 0x44,
+ 0x73,
+ 0xcc,
+ 0xe5,
+ 0xd0,
+ 0xd2,
+ 0x2b,
+ 0xd9,
+ },
+ {
+ 0xdf,
+ 0x6a,
+ 0x30,
+ 0x1e,
+ 0x95,
+ 0xc9,
+ 0x5d,
+ 0xad,
+ 0x97,
+ 0xae,
+ 0x0c,
+ 0xc8,
+ 0xc6,
+ 0x91,
+ 0x3b,
+ 0xd8,
+ },
+ {
+ 0x80,
+ 0x11,
+ 0x89,
+ 0x90,
+ 0x2c,
+ 0x85,
+ 0x7f,
+ 0x39,
+ 0xe7,
+ 0x35,
+ 0x91,
+ 0x28,
+ 0x5e,
+ 0x70,
+ 0xb6,
+ 0xdb,
+ },
+ {
+ 0xe6,
+ 0x17,
+ 0x34,
+ 0x6a,
+ 0xc9,
+ 0xc2,
+ 0x31,
+ 0xbb,
+ 0x36,
+ 0x50,
+ 0xae,
+ 0x34,
+ 0xcc,
+ 0xca,
+ 0x0c,
+ 0x5b,
+ },
+ {
+ 0x27,
+ 0xd9,
+ 0x34,
+ 0x37,
+ 0xef,
+ 0xb7,
+ 0x21,
+ 0xaa,
+ 0x40,
+ 0x18,
+ 0x21,
+ 0xdc,
+ 0xec,
+ 0x5a,
+ 0xdf,
+ 0x89,
+ },
+ {
+ 0x89,
+ 0x23,
+ 0x7d,
+ 0x9d,
+ 0xed,
+ 0x9c,
+ 0x5e,
+ 0x78,
+ 0xd8,
+ 0xb1,
+ 0xc9,
+ 0xb1,
+ 0x66,
+ 0xcc,
+ 0x73,
+ 0x42,
+ },
+ {
+ 0x4a,
+ 0x6d,
+ 0x80,
+ 0x91,
+ 0xbf,
+ 0x5e,
+ 0x7d,
+ 0x65,
+ 0x11,
+ 0x89,
+ 0xfa,
+ 0x94,
+ 0xa2,
+ 0x50,
+ 0xb1,
+ 0x4c,
+ },
+ {
+ 0x0e,
+ 0x33,
+ 0xf9,
+ 0x60,
+ 0x55,
+ 0xe7,
+ 0xae,
+ 0x89,
+ 0x3f,
+ 0xfc,
+ 0x0e,
+ 0x3d,
+ 0xcf,
+ 0x49,
+ 0x29,
+ 0x02,
+ },
+ {
+ 0xe6,
+ 0x1c,
+ 0x43,
+ 0x2b,
+ 0x72,
+ 0x0b,
+ 0x19,
+ 0xd1,
+ 0x8e,
+ 0xc8,
+ 0xd8,
+ 0x4b,
+ 0xdc,
+ 0x63,
+ 0x15,
+ 0x1b,
+ },
+ {
+ 0xf7,
+ 0xe5,
+ 0xae,
+ 0xf5,
+ 0x49,
+ 0xf7,
+ 0x82,
+ 0xcf,
+ 0x37,
+ 0x90,
+ 0x55,
+ 0xa6,
+ 0x08,
+ 0x26,
+ 0x9b,
+ 0x16,
+ },
+ {
+ 0x43,
+ 0x8d,
+ 0x03,
+ 0x0f,
+ 0xd0,
+ 0xb7,
+ 0xa5,
+ 0x4f,
+ 0xa8,
+ 0x37,
+ 0xf2,
+ 0xad,
+ 0x20,
+ 0x1a,
+ 0x64,
+ 0x03,
+ },
+ {
+ 0xa5,
+ 0x90,
+ 0xd3,
+ 0xee,
+ 0x4f,
+ 0xbf,
+ 0x04,
+ 0xe3,
+ 0x24,
+ 0x7e,
+ 0x0d,
+ 0x27,
+ 0xf2,
+ 0x86,
+ 0x42,
+ 0x3f,
+ },
+ {
+ 0x5f,
+ 0xe2,
+ 0xc1,
+ 0xa1,
+ 0x72,
+ 0xfe,
+ 0x93,
+ 0xc4,
+ 0xb1,
+ 0x5c,
+ 0xd3,
+ 0x7c,
+ 0xae,
+ 0xf9,
+ 0xf5,
+ 0x38,
+ },
+ {
+ 0x2c,
+ 0x97,
+ 0x32,
+ 0x5c,
+ 0xbd,
+ 0x06,
+ 0xb3,
+ 0x6e,
+ 0xb2,
+ 0x13,
+ 0x3d,
+ 0xd0,
+ 0x8b,
+ 0x3a,
+ 0x01,
+ 0x7c,
+ },
+ {
+ 0x92,
+ 0xc8,
+ 0x14,
+ 0x22,
+ 0x7a,
+ 0x6b,
+ 0xca,
+ 0x94,
+ 0x9f,
+ 0xf0,
+ 0x65,
+ 0x9f,
+ 0x00,
+ 0x2a,
+ 0xd3,
+ 0x9e,
+ },
+ {
+ 0xdc,
+ 0xe8,
+ 0x50,
+ 0x11,
+ 0x0b,
+ 0xd8,
+ 0x32,
+ 0x8c,
+ 0xfb,
+ 0xd5,
+ 0x08,
+ 0x41,
+ 0xd6,
+ 0x91,
+ 0x1d,
+ 0x87,
+ },
+ {
+ 0x67,
+ 0xf1,
+ 0x49,
+ 0x84,
+ 0xc7,
+ 0xda,
+ 0x79,
+ 0x12,
+ 0x48,
+ 0xe3,
+ 0x2b,
+ 0xb5,
+ 0x92,
+ 0x25,
+ 0x83,
+ 0xda,
+ },
+ {
+ 0x19,
+ 0x38,
+ 0xf2,
+ 0xcf,
+ 0x72,
+ 0xd5,
+ 0x4e,
+ 0xe9,
+ 0x7e,
+ 0x94,
+ 0x16,
+ 0x6f,
+ 0xa9,
+ 0x1d,
+ 0x2a,
+ 0x36,
+ },
+ {
+ 0x74,
+ 0x48,
+ 0x1e,
+ 0x96,
+ 0x46,
+ 0xed,
+ 0x49,
+ 0xfe,
+ 0x0f,
+ 0x62,
+ 0x24,
+ 0x30,
+ 0x16,
+ 0x04,
+ 0x69,
+ 0x8e,
+ },
+ {
+ 0x57,
+ 0xfc,
+ 0xa5,
+ 0xde,
+ 0x98,
+ 0xa9,
+ 0xd6,
+ 0xd8,
+ 0x00,
+ 0x64,
+ 0x38,
+ 0xd0,
+ 0x58,
+ 0x3d,
+ 0x8a,
+ 0x1d,
+ },
+ {
+ 0x9f,
+ 0xec,
+ 0xde,
+ 0x1c,
+ 0xef,
+ 0xdc,
+ 0x1c,
+ 0xbe,
+ 0xd4,
+ 0x76,
+ 0x36,
+ 0x74,
+ 0xd9,
+ 0x57,
+ 0x53,
+ 0x59,
+ },
+ {
+ 0xe3,
+ 0x04,
+ 0x0c,
+ 0x00,
+ 0xeb,
+ 0x28,
+ 0xf1,
+ 0x53,
+ 0x66,
+ 0xca,
+ 0x73,
+ 0xcb,
+ 0xd8,
+ 0x72,
+ 0xe7,
+ 0x40,
+ },
+ {
+ 0x76,
+ 0x97,
+ 0x00,
+ 0x9a,
+ 0x6a,
+ 0x83,
+ 0x1d,
+ 0xfe,
+ 0xcc,
+ 0xa9,
+ 0x1c,
+ 0x59,
+ 0x93,
+ 0x67,
+ 0x0f,
+ 0x7a,
+ },
+ {
+ 0x58,
+ 0x53,
+ 0x54,
+ 0x23,
+ 0x21,
+ 0xf5,
+ 0x67,
+ 0xa0,
+ 0x05,
+ 0xd5,
+ 0x47,
+ 0xa4,
+ 0xf0,
+ 0x47,
+ 0x59,
+ 0xbd,
+ },
+ {
+ 0x51,
+ 0x50,
+ 0xd1,
+ 0x77,
+ 0x2f,
+ 0x50,
+ 0x83,
+ 0x4a,
+ 0x50,
+ 0x3e,
+ 0x06,
+ 0x9a,
+ 0x97,
+ 0x3f,
+ 0xbd,
+ 0x7c,
+ },
+};
+const uint8_t vectors_hsip32[64][4] = {
+ {
+ 0xa9,
+ 0x35,
+ 0x9f,
+ 0x5b,
+ },
+ {
+ 0x27,
+ 0x47,
+ 0x5a,
+ 0xb8,
+ },
+ {
+ 0xfa,
+ 0x62,
+ 0xa6,
+ 0x03,
+ },
+ {
+ 0x8a,
+ 0xfe,
+ 0xe7,
+ 0x04,
+ },
+ {
+ 0x2a,
+ 0x6e,
+ 0x46,
+ 0x89,
+ },
+ {
+ 0xc5,
+ 0xfa,
+ 0xb6,
+ 0x69,
+ },
+ {
+ 0x58,
+ 0x63,
+ 0xfc,
+ 0x23,
+ },
+ {
+ 0x8b,
+ 0xcf,
+ 0x63,
+ 0xc5,
+ },
+ {
+ 0xd0,
+ 0xb8,
+ 0x84,
+ 0x8f,
+ },
+ {
+ 0xf8,
+ 0x06,
+ 0xe7,
+ 0x79,
+ },
+ {
+ 0x94,
+ 0xb0,
+ 0x79,
+ 0x34,
+ },
+ {
+ 0x08,
+ 0x08,
+ 0x30,
+ 0x50,
+ },
+ {
+ 0x57,
+ 0xf0,
+ 0x87,
+ 0x2f,
+ },
+ {
+ 0x77,
+ 0xe6,
+ 0x63,
+ 0xff,
+ },
+ {
+ 0xd6,
+ 0xff,
+ 0xf8,
+ 0x7c,
+ },
+ {
+ 0x74,
+ 0xfe,
+ 0x2b,
+ 0x97,
+ },
+ {
+ 0xd9,
+ 0xb5,
+ 0xac,
+ 0x84,
+ },
+ {
+ 0xc4,
+ 0x74,
+ 0x64,
+ 0x5b,
+ },
+ {
+ 0x46,
+ 0x5b,
+ 0x8d,
+ 0x9b,
+ },
+ {
+ 0x7b,
+ 0xef,
+ 0xe3,
+ 0x87,
+ },
+ {
+ 0xe3,
+ 0x4d,
+ 0x10,
+ 0x45,
+ },
+ {
+ 0x61,
+ 0x3f,
+ 0x62,
+ 0xb3,
+ },
+ {
+ 0x70,
+ 0xf3,
+ 0x67,
+ 0xfe,
+ },
+ {
+ 0xe6,
+ 0xad,
+ 0xb8,
+ 0xbd,
+ },
+ {
+ 0x27,
+ 0x40,
+ 0x0c,
+ 0x63,
+ },
+ {
+ 0x26,
+ 0x78,
+ 0x78,
+ 0x75,
+ },
+ {
+ 0x4f,
+ 0x56,
+ 0x7b,
+ 0x5f,
+ },
+ {
+ 0x3a,
+ 0xb0,
+ 0xe6,
+ 0x69,
+ },
+ {
+ 0xb0,
+ 0x64,
+ 0x40,
+ 0x00,
+ },
+ {
+ 0xff,
+ 0x67,
+ 0x0f,
+ 0xb4,
+ },
+ {
+ 0x50,
+ 0x9e,
+ 0x33,
+ 0x8b,
+ },
+ {
+ 0x5d,
+ 0x58,
+ 0x9f,
+ 0x1a,
+ },
+ {
+ 0xfe,
+ 0xe7,
+ 0x21,
+ 0x12,
+ },
+ {
+ 0x33,
+ 0x75,
+ 0x32,
+ 0x59,
+ },
+ {
+ 0x6a,
+ 0x43,
+ 0x4f,
+ 0x8c,
+ },
+ {
+ 0xfe,
+ 0x28,
+ 0xb7,
+ 0x29,
+ },
+ {
+ 0xe7,
+ 0x5c,
+ 0xc6,
+ 0xec,
+ },
+ {
+ 0x69,
+ 0x7e,
+ 0x8d,
+ 0x54,
+ },
+ {
+ 0x63,
+ 0x68,
+ 0x8b,
+ 0x0f,
+ },
+ {
+ 0x65,
+ 0x0b,
+ 0x62,
+ 0xb4,
+ },
+ {
+ 0xb6,
+ 0xbc,
+ 0x18,
+ 0x40,
+ },
+ {
+ 0x5d,
+ 0x07,
+ 0x45,
+ 0x05,
+ },
+ {
+ 0x24,
+ 0x42,
+ 0xfd,
+ 0x2e,
+ },
+ {
+ 0x7b,
+ 0xb7,
+ 0x86,
+ 0x3a,
+ },
+ {
+ 0x77,
+ 0x05,
+ 0xd5,
+ 0x48,
+ },
+ {
+ 0xd7,
+ 0x52,
+ 0x08,
+ 0xb1,
+ },
+ {
+ 0xb6,
+ 0xd4,
+ 0x99,
+ 0xc8,
+ },
+ {
+ 0x08,
+ 0x92,
+ 0x20,
+ 0x2e,
+ },
+ {
+ 0x69,
+ 0xe1,
+ 0x2c,
+ 0xe3,
+ },
+ {
+ 0x8d,
+ 0xb5,
+ 0x80,
+ 0xe5,
+ },
+ {
+ 0x36,
+ 0x97,
+ 0x64,
+ 0xc6,
+ },
+ {
+ 0x01,
+ 0x6e,
+ 0x02,
+ 0x04,
+ },
+ {
+ 0x3b,
+ 0x85,
+ 0xf3,
+ 0xd4,
+ },
+ {
+ 0xfe,
+ 0xdb,
+ 0x66,
+ 0xbe,
+ },
+ {
+ 0x1e,
+ 0x69,
+ 0x2a,
+ 0x3a,
+ },
+ {
+ 0xc6,
+ 0x89,
+ 0x84,
+ 0xc0,
+ },
+ {
+ 0xa5,
+ 0xc5,
+ 0xb9,
+ 0x40,
+ },
+ {
+ 0x9b,
+ 0xe9,
+ 0xe8,
+ 0x8c,
+ },
+ {
+ 0x7d,
+ 0xbc,
+ 0x81,
+ 0x40,
+ },
+ {
+ 0x7c,
+ 0x07,
+ 0x8e,
+ 0xc5,
+ },
+ {
+ 0xd4,
+ 0xe7,
+ 0x6c,
+ 0x73,
+ },
+ {
+ 0x42,
+ 0x8f,
+ 0xcb,
+ 0xb9,
+ },
+ {
+ 0xbd,
+ 0x83,
+ 0x99,
+ 0x7a,
+ },
+ {
+ 0x59,
+ 0xea,
+ 0x4a,
+ 0x74,
+ },
+};
+const uint8_t vectors_hsip64[64][8] = {
+ {
+ 0x21,
+ 0x8d,
+ 0x1f,
+ 0x59,
+ 0xb9,
+ 0xb8,
+ 0x3c,
+ 0xc8,
+ },
+ {
+ 0xbe,
+ 0x55,
+ 0x24,
+ 0x12,
+ 0xf8,
+ 0x38,
+ 0x73,
+ 0x15,
+ },
+ {
+ 0x06,
+ 0x4f,
+ 0x39,
+ 0xef,
+ 0x7c,
+ 0x50,
+ 0xeb,
+ 0x57,
+ },
+ {
+ 0xce,
+ 0x0f,
+ 0x1a,
+ 0x45,
+ 0xf7,
+ 0x06,
+ 0x06,
+ 0x79,
+ },
+ {
+ 0xd5,
+ 0xe7,
+ 0x8a,
+ 0x17,
+ 0x5b,
+ 0xe5,
+ 0x2e,
+ 0xa1,
+ },
+ {
+ 0xcb,
+ 0x9d,
+ 0x7c,
+ 0x3f,
+ 0x2f,
+ 0x3d,
+ 0xb5,
+ 0x80,
+ },
+ {
+ 0xce,
+ 0x3e,
+ 0x91,
+ 0x35,
+ 0x8a,
+ 0xa2,
+ 0xbc,
+ 0x25,
+ },
+ {
+ 0xff,
+ 0x20,
+ 0x27,
+ 0x28,
+ 0xb0,
+ 0x7b,
+ 0xc6,
+ 0x84,
+ },
+ {
+ 0xed,
+ 0xfe,
+ 0xe8,
+ 0x20,
+ 0xbc,
+ 0xe4,
+ 0x85,
+ 0x8c,
+ },
+ {
+ 0x5b,
+ 0x51,
+ 0xcc,
+ 0xcc,
+ 0x13,
+ 0x88,
+ 0x83,
+ 0x07,
+ },
+ {
+ 0x95,
+ 0xb0,
+ 0x46,
+ 0x9f,
+ 0x06,
+ 0xa6,
+ 0xf2,
+ 0xee,
+ },
+ {
+ 0xae,
+ 0x26,
+ 0x33,
+ 0x39,
+ 0x94,
+ 0xdd,
+ 0xcd,
+ 0x48,
+ },
+ {
+ 0x7b,
+ 0xc7,
+ 0x1f,
+ 0x9f,
+ 0xae,
+ 0xf5,
+ 0xc7,
+ 0x99,
+ },
+ {
+ 0x5a,
+ 0x23,
+ 0x52,
+ 0xd7,
+ 0x5a,
+ 0x0c,
+ 0x37,
+ 0x44,
+ },
+ {
+ 0x3b,
+ 0xb1,
+ 0xa8,
+ 0x70,
+ 0xea,
+ 0xe8,
+ 0xe6,
+ 0x58,
+ },
+ {
+ 0x21,
+ 0x7d,
+ 0x0b,
+ 0xcb,
+ 0x4e,
+ 0x81,
+ 0xc9,
+ 0x02,
+ },
+ {
+ 0x73,
+ 0x36,
+ 0xaa,
+ 0xd2,
+ 0x5f,
+ 0x7b,
+ 0xf3,
+ 0xb5,
+ },
+ {
+ 0x37,
+ 0xad,
+ 0xc0,
+ 0x64,
+ 0x1c,
+ 0x4c,
+ 0x4f,
+ 0x6a,
+ },
+ {
+ 0xc9,
+ 0xb2,
+ 0xdb,
+ 0x2b,
+ 0x9a,
+ 0x3e,
+ 0x42,
+ 0xf9,
+ },
+ {
+ 0xf9,
+ 0x10,
+ 0xe4,
+ 0x80,
+ 0x20,
+ 0xab,
+ 0x36,
+ 0x3c,
+ },
+ {
+ 0x1b,
+ 0xf5,
+ 0x2b,
+ 0x0a,
+ 0x6f,
+ 0xee,
+ 0xa7,
+ 0xdb,
+ },
+ {
+ 0x00,
+ 0x74,
+ 0x1d,
+ 0xc2,
+ 0x69,
+ 0xe8,
+ 0xb3,
+ 0xef,
+ },
+ {
+ 0xe2,
+ 0x01,
+ 0x03,
+ 0xfa,
+ 0x1b,
+ 0xa7,
+ 0x76,
+ 0xef,
+ },
+ {
+ 0x4c,
+ 0x22,
+ 0x10,
+ 0xe5,
+ 0x4b,
+ 0x68,
+ 0x1d,
+ 0x73,
+ },
+ {
+ 0x70,
+ 0x74,
+ 0x10,
+ 0x45,
+ 0xae,
+ 0x3f,
+ 0xa6,
+ 0xf1,
+ },
+ {
+ 0x0c,
+ 0x86,
+ 0x40,
+ 0x37,
+ 0x39,
+ 0x71,
+ 0x40,
+ 0x38,
+ },
+ {
+ 0x0d,
+ 0x89,
+ 0x9e,
+ 0xd8,
+ 0x11,
+ 0x29,
+ 0x23,
+ 0xf0,
+ },
+ {
+ 0x22,
+ 0x6b,
+ 0xf5,
+ 0xfa,
+ 0xb8,
+ 0x1e,
+ 0xe1,
+ 0xb8,
+ },
+ {
+ 0x2d,
+ 0x92,
+ 0x5f,
+ 0xfb,
+ 0x1e,
+ 0x00,
+ 0x16,
+ 0xb5,
+ },
+ {
+ 0x36,
+ 0x19,
+ 0x58,
+ 0xd5,
+ 0x2c,
+ 0xee,
+ 0x10,
+ 0xf1,
+ },
+ {
+ 0x29,
+ 0x1a,
+ 0xaf,
+ 0x86,
+ 0x48,
+ 0x98,
+ 0x17,
+ 0x9d,
+ },
+ {
+ 0x86,
+ 0x3c,
+ 0x7f,
+ 0x15,
+ 0x5c,
+ 0x34,
+ 0x11,
+ 0x7c,
+ },
+ {
+ 0x28,
+ 0x70,
+ 0x9d,
+ 0x46,
+ 0xd8,
+ 0x11,
+ 0x62,
+ 0x6c,
+ },
+ {
+ 0x24,
+ 0x84,
+ 0x77,
+ 0x68,
+ 0x1d,
+ 0x28,
+ 0xf8,
+ 0x9c,
+ },
+ {
+ 0x83,
+ 0x24,
+ 0xe4,
+ 0xd7,
+ 0x52,
+ 0x8f,
+ 0x98,
+ 0x30,
+ },
+ {
+ 0xf9,
+ 0xef,
+ 0xd4,
+ 0xe1,
+ 0x3a,
+ 0xea,
+ 0x6b,
+ 0xd8,
+ },
+ {
+ 0x86,
+ 0xd6,
+ 0x7a,
+ 0x40,
+ 0xec,
+ 0x42,
+ 0x76,
+ 0xdc,
+ },
+ {
+ 0x3f,
+ 0x62,
+ 0x92,
+ 0xec,
+ 0xcc,
+ 0xa9,
+ 0x7e,
+ 0x35,
+ },
+ {
+ 0xcb,
+ 0xd9,
+ 0x2e,
+ 0xe7,
+ 0x24,
+ 0xd4,
+ 0x21,
+ 0x09,
+ },
+ {
+ 0x36,
+ 0x8d,
+ 0xf6,
+ 0x80,
+ 0x8d,
+ 0x40,
+ 0x3d,
+ 0x79,
+ },
+ {
+ 0x5b,
+ 0x38,
+ 0xc8,
+ 0x1c,
+ 0x67,
+ 0xc8,
+ 0xae,
+ 0x4c,
+ },
+ {
+ 0x95,
+ 0xab,
+ 0x71,
+ 0x89,
+ 0xd4,
+ 0x39,
+ 0xac,
+ 0xb3,
+ },
+ {
+ 0xa9,
+ 0x1a,
+ 0x52,
+ 0xc0,
+ 0x25,
+ 0x32,
+ 0x70,
+ 0x24,
+ },
+ {
+ 0x5b,
+ 0x00,
+ 0x87,
+ 0xc6,
+ 0x95,
+ 0x28,
+ 0xac,
+ 0xea,
+ },
+ {
+ 0x1e,
+ 0x30,
+ 0xf3,
+ 0xad,
+ 0x27,
+ 0xdc,
+ 0xb1,
+ 0x5a,
+ },
+ {
+ 0x69,
+ 0x7f,
+ 0x5c,
+ 0x9a,
+ 0x90,
+ 0x32,
+ 0x4e,
+ 0xd4,
+ },
+ {
+ 0x49,
+ 0x5c,
+ 0x0f,
+ 0x99,
+ 0x55,
+ 0x57,
+ 0xdc,
+ 0x38,
+ },
+ {
+ 0x94,
+ 0x27,
+ 0x20,
+ 0x2a,
+ 0x3c,
+ 0x29,
+ 0xf9,
+ 0x4d,
+ },
+ {
+ 0xa9,
+ 0xea,
+ 0xa8,
+ 0xc0,
+ 0x4b,
+ 0xa9,
+ 0x3e,
+ 0x3e,
+ },
+ {
+ 0xee,
+ 0xa4,
+ 0xc1,
+ 0x73,
+ 0x7d,
+ 0x01,
+ 0x12,
+ 0x18,
+ },
+ {
+ 0x91,
+ 0x2d,
+ 0x56,
+ 0x8f,
+ 0xd8,
+ 0xf6,
+ 0x5a,
+ 0x49,
+ },
+ {
+ 0x56,
+ 0x91,
+ 0x95,
+ 0x96,
+ 0xb0,
+ 0xff,
+ 0x5c,
+ 0x97,
+ },
+ {
+ 0x02,
+ 0x44,
+ 0x5a,
+ 0x79,
+ 0x98,
+ 0xf5,
+ 0x50,
+ 0xe1,
+ },
+ {
+ 0x86,
+ 0xec,
+ 0x46,
+ 0x6c,
+ 0xe7,
+ 0x1d,
+ 0x1f,
+ 0xb2,
+ },
+ {
+ 0x35,
+ 0x95,
+ 0x69,
+ 0xe7,
+ 0xd2,
+ 0x89,
+ 0xe3,
+ 0xbc,
+ },
+ {
+ 0x87,
+ 0x1b,
+ 0x05,
+ 0xca,
+ 0x62,
+ 0xbb,
+ 0x7c,
+ 0x96,
+ },
+ {
+ 0xa1,
+ 0xa4,
+ 0x92,
+ 0xf9,
+ 0x42,
+ 0xf1,
+ 0x5f,
+ 0x1d,
+ },
+ {
+ 0x12,
+ 0xec,
+ 0x26,
+ 0x7f,
+ 0xf6,
+ 0x09,
+ 0x5b,
+ 0x6e,
+ },
+ {
+ 0x5d,
+ 0x1b,
+ 0x5e,
+ 0xa1,
+ 0xb2,
+ 0x31,
+ 0xd8,
+ 0x9d,
+ },
+ {
+ 0xd8,
+ 0xcf,
+ 0xb4,
+ 0x45,
+ 0x3f,
+ 0x92,
+ 0xee,
+ 0x54,
+ },
+ {
+ 0xd6,
+ 0x76,
+ 0x28,
+ 0x90,
+ 0xbf,
+ 0x26,
+ 0xe4,
+ 0x60,
+ },
+ {
+ 0x31,
+ 0x35,
+ 0x63,
+ 0xa4,
+ 0xb7,
+ 0xed,
+ 0x5c,
+ 0xf3,
+ },
+ {
+ 0xf9,
+ 0x0b,
+ 0x3a,
+ 0xb5,
+ 0x72,
+ 0xd4,
+ 0x66,
+ 0x93,
+ },
+ {
+ 0x2e,
+ 0xa6,
+ 0x3c,
+ 0x71,
+ 0xbf,
+ 0x32,
+ 0x60,
+ 0x87,
+ },
+};
More information about the llvm-commits
mailing list