[PATCH] D132141: [X86] Emulate _rdrand64_step with two rdrand32 if it is 32bit

Craig Topper via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 18 08:40:04 PDT 2022


craig.topper added inline comments.


================
Comment at: clang/lib/Headers/immintrin.h:301
+  unsigned long long tmp;
+  if (__builtin_ia32_rdrand32_step((unsigned int *)&tmp) &
+      __builtin_ia32_rdrand32_step(((unsigned int *)&tmp) + 1)) {
----------------
Should `&` be `&&`?


================
Comment at: clang/lib/Headers/immintrin.h:301
+  unsigned long long tmp;
+  if (__builtin_ia32_rdrand32_step((unsigned int *)&tmp) &
+      __builtin_ia32_rdrand32_step(((unsigned int *)&tmp) + 1)) {
----------------
craig.topper wrote:
> Should `&` be `&&`?
Can we avoid the pointer cast here? Use two unsigned ints and manually concatenate them to a 64-bit value.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D132141/new/

https://reviews.llvm.org/D132141



More information about the cfe-commits mailing list