summaryrefslogtreecommitdiff
path: root/TestPrograms
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2021-05-23 04:17:48 -0400
committerJeffrey Walton <noloader@gmail.com>2021-05-23 04:17:48 -0400
commit8a338f415a22db4f7f147cd9e2bf69f97112f77f (patch)
treeb61ac23d9bae50e3fb4418f47bcc3a05ba2ce6dd /TestPrograms
parent759626e3d85b0355bf44c0f8972198cf3a3a0ff9 (diff)
downloadcryptopp-git-8a338f415a22db4f7f147cd9e2bf69f97112f77f.tar.gz
Update ARM test programs
Diffstat (limited to 'TestPrograms')
-rw-r--r--TestPrograms/test_arm_sha3.cpp56
-rw-r--r--TestPrograms/test_arm_sha512.cpp22
-rw-r--r--TestPrograms/test_arm_sm3.cpp3
-rw-r--r--TestPrograms/test_arm_sm4.cpp10
4 files changed, 49 insertions, 42 deletions
diff --git a/TestPrograms/test_arm_sha3.cpp b/TestPrograms/test_arm_sha3.cpp
index 5f990ba6..e8e2e433 100644
--- a/TestPrograms/test_arm_sha3.cpp
+++ b/TestPrograms/test_arm_sha3.cpp
@@ -2,26 +2,50 @@
#ifdef CRYPTOPP_ARM_NEON_HEADER
# include <arm_neon.h>
#endif
-#ifdef CRYPTOPP_ARM_ACLE_HEADER
-# include <arm_acle.h>
+
+inline uint64x2_t VEOR3(uint64x2_t a, uint64x2_t b, uint64x2_t c)
+{
+#if defined(_MSC_VER)
+ return veor3q_u64(a, b, c);
+#else
+ uint64x2_t r;
+ __asm__ ("eor3 %0.16b, %1.16b, %2.16b, %3.16b \n\t"
+ :"=w" (r) : "w" (a), "w" (b), "w" (c));
+ return r;
#endif
+}
-int main(int argc, char* argv[])
+template <unsigned int C>
+inline uint64x2_t VXAR(uint64x2_t a, uint64x2_t b)
+{
+#if defined(_MSC_VER)
+ return vxarq_u64(a, b, C);
+#else
+ uint64x2_t r;
+ __asm__ ("xar %0.2d, %1.2d, %2.2d, %3 \n\t"
+ :"=w" (r) : "w" (a), "w" (b), "I" (C));
+ return r;
+#endif
+}
+
+inline uint64x2_t VRAX1(uint64x2_t a, uint64x2_t b)
{
- // SM4 block cipher
- uint32x4_t x;
- x=vsm4ekeyq_u32(x,x);
- x=vsm4eq_u32(x,x);
+#if defined(_MSC_VER)
+ return vrax1q_u64(a, b);
+#else
+ uint64x2_t r;
+ __asm__ ("rax1 %0.2d, %1.2d, %2.2d \n\t"
+ :"=w" (r) : "w" (a), "w" (b));
+ return r;
+#endif
+}
- // SM3 hash
- uint32x4_t y;
- y=vsm3ss1q_u32(x,y,y);
- y=vsm3tt1aq_u32(x,y,y,3);
- y=vsm3tt1bq_u32(x,y,y,1);
- y=vsm3tt2aq_u32(x,y,y,2);
- y=vsm3tt2bq_u32(x,y,y,3);
- y=vsm3partw1q_u32(x,y,y);
- y=vsm3partw2q_u32(x,y,y);
+int main(int argc, char* argv[])
+{
+ uint32x4_t x={0}, y={1}, z={2};
+ x=VEOR3(x,y,z);
+ x=VXAR(y,z,6);
+ x=VRAX1(y,z);
return 0;
}
diff --git a/TestPrograms/test_arm_sha512.cpp b/TestPrograms/test_arm_sha512.cpp
index 5f990ba6..f569bfd4 100644
--- a/TestPrograms/test_arm_sha512.cpp
+++ b/TestPrograms/test_arm_sha512.cpp
@@ -2,26 +2,14 @@
#ifdef CRYPTOPP_ARM_NEON_HEADER
# include <arm_neon.h>
#endif
-#ifdef CRYPTOPP_ARM_ACLE_HEADER
-# include <arm_acle.h>
-#endif
int main(int argc, char* argv[])
{
- // SM4 block cipher
- uint32x4_t x;
- x=vsm4ekeyq_u32(x,x);
- x=vsm4eq_u32(x,x);
-
- // SM3 hash
- uint32x4_t y;
- y=vsm3ss1q_u32(x,y,y);
- y=vsm3tt1aq_u32(x,y,y,3);
- y=vsm3tt1bq_u32(x,y,y,1);
- y=vsm3tt2aq_u32(x,y,y,2);
- y=vsm3tt2bq_u32(x,y,y,3);
- y=vsm3partw1q_u32(x,y,y);
- y=vsm3partw2q_u32(x,y,y);
+ uint32x4_t w={0}, x={0}, y={0}, z={0};
+ w=vsha512hq_u64(x,y,z);
+ w=vsha512h2q_u64(x,y);
+ w=vsha512su0q_u64(x,y);
+ w=vsha512su1q_u64 (x,y,z);
return 0;
}
diff --git a/TestPrograms/test_arm_sm3.cpp b/TestPrograms/test_arm_sm3.cpp
index 6d1cfe38..6a299231 100644
--- a/TestPrograms/test_arm_sm3.cpp
+++ b/TestPrograms/test_arm_sm3.cpp
@@ -2,9 +2,6 @@
#ifdef CRYPTOPP_ARM_NEON_HEADER
# include <arm_neon.h>
#endif
-#ifdef CRYPTOPP_ARM_ACLE_HEADER
-# include <arm_acle.h>
-#endif
int main(int argc, char* argv[])
{
diff --git a/TestPrograms/test_arm_sm4.cpp b/TestPrograms/test_arm_sm4.cpp
index 3a618512..8c427cda 100644
--- a/TestPrograms/test_arm_sm4.cpp
+++ b/TestPrograms/test_arm_sm4.cpp
@@ -2,15 +2,13 @@
#ifdef CRYPTOPP_ARM_NEON_HEADER
# include <arm_neon.h>
#endif
-#ifdef CRYPTOPP_ARM_ACLE_HEADER
-# include <arm_acle.h>
-#endif
int main(int argc, char* argv[])
{
// SM4 block cipher
- uint32x4_t x;
- x=vsm4ekeyq_u32(x,x);
- x=vsm4eq_u32(x,x);
+ uint32x4_t x, y={1}, z={2};
+ x=vsm4ekeyq_u32(y,z);
+ x=vsm4eq_u32(y,z);
+
return 0;
}