[clang] Fixed vec_pack_to_short_fp32 in Clang altivec.h (PR #129923)

via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 5 11:56:40 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-x86

Author: John Platts (johnplatts)

<details>
<summary>Changes</summary>

Fixes bug in vec_pack_to_short_fp32 in clang/lib/Headers/altivec.h.

Resolves issue #<!-- -->60822

Reviewer: @<!-- -->lei137

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


1 Files Affected:

- (modified) clang/lib/Headers/altivec.h (+3-7) 


``````````diff
diff --git a/clang/lib/Headers/altivec.h b/clang/lib/Headers/altivec.h
index 8da65055012f1..45d557238e3d9 100644
--- a/clang/lib/Headers/altivec.h
+++ b/clang/lib/Headers/altivec.h
@@ -7529,13 +7529,9 @@ vec_pack(vector double __a, vector double __b) {
 #ifdef __POWER9_VECTOR__
 static __inline__ vector unsigned short __ATTRS_o_ai
 vec_pack_to_short_fp32(vector float __a, vector float __b) {
-  vector float __resa = __builtin_vsx_xvcvsphp(__a);
-  vector float __resb = __builtin_vsx_xvcvsphp(__b);
-#ifdef __LITTLE_ENDIAN__
-  return (vector unsigned short)vec_mergee(__resa, __resb);
-#else
-  return (vector unsigned short)vec_mergeo(__resa, __resb);
-#endif
+  vector unsigned int __resa = (vector unsigned int)__builtin_vsx_xvcvsphp(__a);
+  vector unsigned int __resb = (vector unsigned int)__builtin_vsx_xvcvsphp(__b);
+  return vec_pack(__resa, __resb);
 }
 
 #endif

``````````

</details>


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


More information about the cfe-commits mailing list