[libc-commits] [libc] [libc][NFC] Use 16-byte indices for _mmXXX_shuffle_epi8 (PR #77781)

via libc-commits libc-commits at lists.llvm.org
Thu Jan 11 07:14:32 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libc

Author: Guillaume Chatelet (gchatelet)

<details>
<summary>Changes</summary>

This is less confusing since the implementation only cares about the 4 lower bits.


---
Full diff: https://github.com/llvm/llvm-project/pull/77781.diff


1 Files Affected:

- (modified) libc/src/string/memory_utils/op_x86.h (+7-7) 


``````````diff
diff --git a/libc/src/string/memory_utils/op_x86.h b/libc/src/string/memory_utils/op_x86.h
index a6529a6d424a30..6ae9583627bd6d 100644
--- a/libc/src/string/memory_utils/op_x86.h
+++ b/libc/src/string/memory_utils/op_x86.h
@@ -263,13 +263,13 @@ LIBC_INLINE uint64_t big_endian_cmp_mask(__m512i max, __m512i value) {
   // 16-byte lane.
   // zmm = | 16 bytes  | 16 bytes  | 16 bytes  | 16 bytes  |
   // zmm = | <8> | <8> | <8> | <8> | <8> | <8> | <8> | <8> |
-  const __m512i indices = _mm512_set_epi8(56, 57, 58, 59, 60, 61, 62, 63, //
-                                          48, 49, 50, 51, 52, 53, 54, 55, //
-                                          40, 41, 42, 43, 44, 45, 46, 47, //
-                                          32, 33, 34, 35, 36, 37, 38, 39, //
-                                          24, 25, 26, 27, 28, 29, 30, 31, //
-                                          16, 17, 18, 19, 20, 21, 22, 23, //
-                                          8, 9, 10, 11, 12, 13, 14, 15,   //
+  const __m512i indices = _mm512_set_epi8(8, 9, 10, 11, 12, 13, 14, 15, //
+                                          0, 1, 2, 3, 4, 5, 6, 7,       //
+                                          8, 9, 10, 11, 12, 13, 14, 15, //
+                                          0, 1, 2, 3, 4, 5, 6, 7,       //
+                                          8, 9, 10, 11, 12, 13, 14, 15, //
+                                          0, 1, 2, 3, 4, 5, 6, 7,       //
+                                          8, 9, 10, 11, 12, 13, 14, 15, //
                                           0, 1, 2, 3, 4, 5, 6, 7);
   // Then we compute the mask for equal bytes. In this mask the bits of each
   // byte are already reversed but the byte themselves should be reversed, this

``````````

</details>


https://github.com/llvm/llvm-project/pull/77781


More information about the libc-commits mailing list