summaryrefslogtreecommitdiff
path: root/TestPrograms
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-11-11 01:14:43 -0500
committerGitHub <noreply@github.com>2018-11-11 01:14:43 -0500
commit6e94562c526cc2847abbb175e46ebd0b16617ce6 (patch)
tree71f5e42ba380f11c5901cf81a29a39a025a221e7 /TestPrograms
parent087f97edea44f56a0220c336a52d0a778a70983d (diff)
downloadcryptopp-git-6e94562c526cc2847abbb175e46ebd0b16617ce6.tar.gz
Move to feature-based availability testing in Makefile (PR #737)
Diffstat (limited to 'TestPrograms')
-rw-r--r--TestPrograms/test_aesni.cxx10
-rw-r--r--TestPrograms/test_altivec.cxx8
-rw-r--r--TestPrograms/test_asimd.cxx16
-rw-r--r--TestPrograms/test_avx.cxx7
-rw-r--r--TestPrograms/test_avx2.cxx7
-rw-r--r--TestPrograms/test_clmul.cxx7
-rw-r--r--TestPrograms/test_cpuid.cxx8
-rw-r--r--TestPrograms/test_crc.cxx23
-rw-r--r--TestPrograms/test_crypto_v81.cxx23
-rw-r--r--TestPrograms/test_crypto_v84.cxx29
-rw-r--r--TestPrograms/test_cxx.cxx7
-rw-r--r--TestPrograms/test_neon.cxx13
-rw-r--r--TestPrograms/test_power7.cxx15
-rw-r--r--TestPrograms/test_power8.cxx19
-rw-r--r--TestPrograms/test_shani.cxx13
-rw-r--r--TestPrograms/test_sse2.cxx7
-rw-r--r--TestPrograms/test_sse3.cxx7
-rw-r--r--TestPrograms/test_sse41.cxx7
-rw-r--r--TestPrograms/test_sse42.cxx7
-rw-r--r--TestPrograms/test_ssse3.cxx7
20 files changed, 240 insertions, 0 deletions
diff --git a/TestPrograms/test_aesni.cxx b/TestPrograms/test_aesni.cxx
new file mode 100644
index 00000000..c98fd487
--- /dev/null
+++ b/TestPrograms/test_aesni.cxx
@@ -0,0 +1,10 @@
+#include <wmmintrin.h>
+int main(int argc, char* argv[])
+{
+ __m128i x;
+ x=_mm_aesenc_si128(x,x);
+ x=_mm_aesenclast_si128(x,x);
+ x=_mm_aesdec_si128(x,x);
+ x=_mm_aesdeclast_si128(x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_altivec.cxx b/TestPrograms/test_altivec.cxx
new file mode 100644
index 00000000..3223c1c3
--- /dev/null
+++ b/TestPrograms/test_altivec.cxx
@@ -0,0 +1,8 @@
+#include <altivec.h>
+int main(int argc, char* argv[])
+{
+ __vector unsigned char x;
+ x=vec_ld(0, (unsigned char*)argv[0]);
+ x=vec_add(x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_asimd.cxx b/TestPrograms/test_asimd.cxx
new file mode 100644
index 00000000..2940bb4b
--- /dev/null
+++ b/TestPrograms/test_asimd.cxx
@@ -0,0 +1,16 @@
+#include <arm_neon.h>
+#include <stdint.h>
+
+// This is how config.h includes it.
+#if defined(__aarch32__) || defined(__aarch64__) || (__ARM_ARCH >= 8) || defined(__ARM_ACLE)
+# if !defined(__ANDROID__) && !defined(ANDROID) && !defined(__APPLE__)
+# include <arm_acle.h>
+# endif
+#endif
+
+int main(int argc, char* argv[])
+{
+ uint32x4_t x;
+ x=veorq_u32(x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_avx.cxx b/TestPrograms/test_avx.cxx
new file mode 100644
index 00000000..af64cf8d
--- /dev/null
+++ b/TestPrograms/test_avx.cxx
@@ -0,0 +1,7 @@
+#include <immintrin.h>
+int main(int argc, char* argv[])
+{
+ __m256d x;
+ x=_mm256_addsub_pd(x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_avx2.cxx b/TestPrograms/test_avx2.cxx
new file mode 100644
index 00000000..611ebc34
--- /dev/null
+++ b/TestPrograms/test_avx2.cxx
@@ -0,0 +1,7 @@
+#include <immintrin.h>
+int main(int argc, char* argv[])
+{
+ __m256i x;
+ x=_mm256_add_epi64 (x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_clmul.cxx b/TestPrograms/test_clmul.cxx
new file mode 100644
index 00000000..1670abdf
--- /dev/null
+++ b/TestPrograms/test_clmul.cxx
@@ -0,0 +1,7 @@
+#include <wmmintrin.h>
+int main(int argc, char* argv[])
+{
+ __m128i x;
+ x=_mm_clmulepi64_si128(x,x,0x11);
+ return 0;
+}
diff --git a/TestPrograms/test_cpuid.cxx b/TestPrograms/test_cpuid.cxx
new file mode 100644
index 00000000..da755a0b
--- /dev/null
+++ b/TestPrograms/test_cpuid.cxx
@@ -0,0 +1,8 @@
+#include <stdint.h>
+int main(int argc, char* argv[])
+{
+ uint32_t a, b, c, d;
+ asm volatile ( "cpuid" : "+a"(a), "=b"(b), "+c"(c), "=d"(d) );
+
+ return 0;
+}
diff --git a/TestPrograms/test_crc.cxx b/TestPrograms/test_crc.cxx
new file mode 100644
index 00000000..d8629efb
--- /dev/null
+++ b/TestPrograms/test_crc.cxx
@@ -0,0 +1,23 @@
+#include <arm_neon.h>
+#include <stdint.h>
+
+// This is how config.h includes it.
+#if defined(__aarch32__) || defined(__aarch64__) || (__ARM_ARCH >= 8) || defined(__ARM_ACLE)
+# if !defined(__ANDROID__) && !defined(ANDROID) && !defined(__APPLE__)
+# include <arm_acle.h>
+# endif
+#endif
+
+int main(int argc, char* argv[])
+{
+ uint32_t w=0xffffffff;
+
+ w = __crc32w(w,w);
+ w = __crc32h(w,w);
+ w = __crc32b(w,w);
+ w = __crc32cw(w,w);
+ w = __crc32ch(w,w);
+ w = __crc32cb(w,w);
+
+ return 0;
+}
diff --git a/TestPrograms/test_crypto_v81.cxx b/TestPrograms/test_crypto_v81.cxx
new file mode 100644
index 00000000..d0e440e0
--- /dev/null
+++ b/TestPrograms/test_crypto_v81.cxx
@@ -0,0 +1,23 @@
+#include <arm_neon.h>
+#include <stdint.h>
+
+// This is how config.h includes it.
+#if defined(__aarch32__) || defined(__aarch64__) || (__ARM_ARCH >= 8) || defined(__ARM_ACLE)
+# if !defined(__ANDROID__) && !defined(ANDROID) && !defined(__APPLE__)
+# include <arm_acle.h>
+# endif
+#endif
+
+int main(int argc, char* argv[])
+{
+ uint8x16_t x;
+ x=vaeseq_u8(x,x);
+ x=vaesdq_u8(x,x);
+
+ uint32x4_t y;
+ y=vsha1cq_u32(y,0,y);
+ y=vsha1mq_u32(y,1,y);
+ y=vsha1pq_u32(y,2,y);
+
+ return 0;
+}
diff --git a/TestPrograms/test_crypto_v84.cxx b/TestPrograms/test_crypto_v84.cxx
new file mode 100644
index 00000000..8ce696fc
--- /dev/null
+++ b/TestPrograms/test_crypto_v84.cxx
@@ -0,0 +1,29 @@
+#include <arm_neon.h>
+#include <stdint.h>
+
+// This is how config.h includes it.
+#if defined(__aarch32__) || defined(__aarch64__) || (__ARM_ARCH >= 8) || defined(__ARM_ACLE)
+# if !defined(__ANDROID__) && !defined(ANDROID) && !defined(__APPLE__)
+# include <arm_acle.h>
+# endif
+#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);
+
+ return 0;
+}
diff --git a/TestPrograms/test_cxx.cxx b/TestPrograms/test_cxx.cxx
new file mode 100644
index 00000000..49795db4
--- /dev/null
+++ b/TestPrograms/test_cxx.cxx
@@ -0,0 +1,7 @@
+#include <string>
+#include <cstdint>
+int main(int argc, char* argv[])
+{
+ uint32_t x=0;
+ return x;
+}
diff --git a/TestPrograms/test_neon.cxx b/TestPrograms/test_neon.cxx
new file mode 100644
index 00000000..7e293633
--- /dev/null
+++ b/TestPrograms/test_neon.cxx
@@ -0,0 +1,13 @@
+#include <arm_neon.h>
+#include <stdint.h>
+
+#if (CRYPTOPP_ARM_ACLE_AVAILABLE)
+# include <arm_acle.h>
+#endif
+
+int main(int argc, char* argv[])
+{
+ uint32x4_t x;
+ x=veorq_u32(x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_power7.cxx b/TestPrograms/test_power7.cxx
new file mode 100644
index 00000000..54575cfd
--- /dev/null
+++ b/TestPrograms/test_power7.cxx
@@ -0,0 +1,15 @@
+#include <altivec.h>
+int main(int argc, char* argv[])
+{
+ __vector unsigned int z;
+#if defined(__xlc__) || defined(__xlC__) || defined(__clang__)
+ __vector unsigned char x;
+ x=vec_xl(0, (unsigned char*)argv[0]);
+ x=vec_add(x,x);
+#else
+ __vector unsigned char x;
+ x=vec_vsx_ld(0, (unsigned char*)argv[0]);
+ x=vec_add(x,x);
+#endif
+ return 0;
+}
diff --git a/TestPrograms/test_power8.cxx b/TestPrograms/test_power8.cxx
new file mode 100644
index 00000000..9e864e10
--- /dev/null
+++ b/TestPrograms/test_power8.cxx
@@ -0,0 +1,19 @@
+#include <altivec.h>
+int main(int argc, char* argv[])
+{
+ __vector unsigned long long z;
+#if defined(__xlc__) || defined(__xlC__) || defined(__clang__)
+ __vector unsigned char x;
+ x=__vcipher(x,x);
+ x=__vcipherlast(x,x);
+ x=__vncipher(x,x);
+ x=__vncipherlast(x,x);
+#elif defined(CRYPTOPP_GCC_VERSION)
+ __vector unsigned long long x;
+ x=__builtin_crypto_vcipher(x,x);
+ x=__builtin_crypto_vcipherlast(x,x);
+ x=__builtin_crypto_vncipher(x,x);
+ x=__builtin_crypto_vncipherlast(x,x);
+#endif
+ return 0;
+}
diff --git a/TestPrograms/test_shani.cxx b/TestPrograms/test_shani.cxx
new file mode 100644
index 00000000..700d9e51
--- /dev/null
+++ b/TestPrograms/test_shani.cxx
@@ -0,0 +1,13 @@
+#include <immintrin.h>
+int main(int argc, char* argv[])
+{
+ __m128i x;
+ x=_mm_sha1msg1_epu32(x,x);
+ x=_mm_sha1msg2_epu32(x,x);
+ x=_mm_sha1nexte_epu32(x,x);
+ x=_mm_sha1rnds4_epu32(x,x,0);
+ x=_mm_sha256msg1_epu32(x,x);
+ x=_mm_sha256msg2_epu32(x,x);
+ x=_mm_sha256rnds2_epu32(x,x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_sse2.cxx b/TestPrograms/test_sse2.cxx
new file mode 100644
index 00000000..090ed445
--- /dev/null
+++ b/TestPrograms/test_sse2.cxx
@@ -0,0 +1,7 @@
+#include <immintrin.h>
+int main(int argc, char* argv[])
+{
+ __m128i x;
+ x=_mm_add_epi64(x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_sse3.cxx b/TestPrograms/test_sse3.cxx
new file mode 100644
index 00000000..6ec1f74b
--- /dev/null
+++ b/TestPrograms/test_sse3.cxx
@@ -0,0 +1,7 @@
+#include <pmmintrin.h>
+int main(int argc, char* argv[])
+{
+ __m128d x;
+ x=_mm_addsub_pd(x,x);
+ return 0;
+}
diff --git a/TestPrograms/test_sse41.cxx b/TestPrograms/test_sse41.cxx
new file mode 100644
index 00000000..771c8de8
--- /dev/null
+++ b/TestPrograms/test_sse41.cxx
@@ -0,0 +1,7 @@
+#include <smmintrin.h>
+int main(int argc, char* argv[])
+{
+ __m128i x, a, b;
+ x=_mm_blend_epi16(a,b,4);
+ return 0;
+}
diff --git a/TestPrograms/test_sse42.cxx b/TestPrograms/test_sse42.cxx
new file mode 100644
index 00000000..1ba74eb2
--- /dev/null
+++ b/TestPrograms/test_sse42.cxx
@@ -0,0 +1,7 @@
+#include <nmmintrin.h>
+int main(int argc, char* argv[])
+{
+ unsigned int x=32;
+ x=_mm_crc32_u8(x,4);
+ return 0;
+}
diff --git a/TestPrograms/test_ssse3.cxx b/TestPrograms/test_ssse3.cxx
new file mode 100644
index 00000000..5c437569
--- /dev/null
+++ b/TestPrograms/test_ssse3.cxx
@@ -0,0 +1,7 @@
+#include <tmmintrin.h>
+int main(int argc, char* argv[])
+{
+ __m128i x;
+ x=_mm_alignr_epi8(x,x,2);
+ return 0;
+}