diff options
author | Jeffrey Walton <noloader@gmail.com> | 2020-07-27 11:55:24 -0400 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2020-07-27 11:55:24 -0400 |
commit | 1432ae08195be0f5c797760fb987b568ceb715b9 (patch) | |
tree | 340365a0ebf48b3fb2ec6d65787f9443f8a10044 /TestPrograms/test_x86_via_sha.cxx | |
parent | abd8b7a991e24a3b5fdd80be6a60c904c092b7a0 (diff) | |
download | cryptopp-git-1432ae08195be0f5c797760fb987b568ceb715b9.tar.gz |
Add additiona; test programs
Diffstat (limited to 'TestPrograms/test_x86_via_sha.cxx')
-rw-r--r-- | TestPrograms/test_x86_via_sha.cxx | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/TestPrograms/test_x86_via_sha.cxx b/TestPrograms/test_x86_via_sha.cxx new file mode 100644 index 00000000..84809adc --- /dev/null +++ b/TestPrograms/test_x86_via_sha.cxx @@ -0,0 +1,39 @@ +// TODO: cut-in xsha1
+#include <cstdlib>
+int main(int argc, char* argv[])
+{
+ unsigned int msr=0;
+ unsigned int divisor=2;
+ unsigned int buffer;
+
+ __asm__ __volatile__
+ (
+#if (CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X64)
+ "mov %1, %%rdi ;\n"
+ "movl %2, %%edx ;\n"
+#else
+ "mov %1, %%edi ;\n"
+ "movl %2, %%edx ;\n"
+#endif
+
+ // xstore-rng
+ ".byte 0x0f, 0xa7, 0xc0 ;\n"
+
+#if (CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X64)
+ "andq %%rax, 0x1f ;\n"
+ "movl %%eax, %0 ;\n"
+#else
+ "andl %%eax, 0x1f ;\n"
+ "movl %%eax, %0 ;\n"
+#endif
+
+ : "=g" (msr) : "g" (buffer), "g" (divisor)
+#if (CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X64)
+ : "rax", "rdx", "rdi", "cc"
+#else
+ : "eax", "edx", "edi", "cc"
+#endif
+ );
+
+ return 0;
+}
|