[clang] cebba7c - [SystemZ] Avoid unnecessary conversions in vecintrin.h
Ulrich Weigand via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 16 09:58:34 PST 2020
Author: Ulrich Weigand
Date: 2020-01-16T18:58:14+01:00
New Revision: cebba7ce3952c8f37a923fa3a10360fd4c463775
URL: https://github.com/llvm/llvm-project/commit/cebba7ce3952c8f37a923fa3a10360fd4c463775
DIFF: https://github.com/llvm/llvm-project/commit/cebba7ce3952c8f37a923fa3a10360fd4c463775.diff
LOG: [SystemZ] Avoid unnecessary conversions in vecintrin.h
Use floating-point instead of integer zero constants to avoid
creating implicit conversions, which currently cause suboptimal
code to be generated with -ffp-exception-behavior=strict.
NFC otherwise.
Added:
Modified:
clang/lib/Headers/vecintrin.h
Removed:
################################################################################
diff --git a/clang/lib/Headers/vecintrin.h b/clang/lib/Headers/vecintrin.h
index c71b76a3ee39..6f9b609f2dfe 100644
--- a/clang/lib/Headers/vecintrin.h
+++ b/clang/lib/Headers/vecintrin.h
@@ -290,7 +290,7 @@ vec_promote(unsigned long long __scalar, int __index) {
#if __ARCH__ >= 12
static inline __ATTRS_o_ai vector float
vec_promote(float __scalar, int __index) {
- const vector float __zero = (vector float)0;
+ const vector float __zero = (vector float)0.0f;
vector float __vec = __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
__vec[__index & 3] = __scalar;
return __vec;
@@ -299,7 +299,7 @@ vec_promote(float __scalar, int __index) {
static inline __ATTRS_o_ai vector double
vec_promote(double __scalar, int __index) {
- const vector double __zero = (vector double)0;
+ const vector double __zero = (vector double)0.0;
vector double __vec = __builtin_shufflevector(__zero, __zero, -1, -1);
__vec[__index & 1] = __scalar;
return __vec;
@@ -366,7 +366,7 @@ vec_insert_and_zero(const unsigned long long *__ptr) {
#if __ARCH__ >= 12
static inline __ATTRS_o_ai vector float
vec_insert_and_zero(const float *__ptr) {
- vector float __vec = (vector float)0;
+ vector float __vec = (vector float)0.0f;
__vec[1] = *__ptr;
return __vec;
}
@@ -374,7 +374,7 @@ vec_insert_and_zero(const float *__ptr) {
static inline __ATTRS_o_ai vector double
vec_insert_and_zero(const double *__ptr) {
- vector double __vec = (vector double)0;
+ vector double __vec = (vector double)0.0;
__vec[0] = *__ptr;
return __vec;
}
More information about the cfe-commits
mailing list