aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/compiler-rt/lib/builtins/parityti2.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/compiler-rt/lib/builtins/parityti2.c')
-rw-r--r--contrib/llvm-project/compiler-rt/lib/builtins/parityti2.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/contrib/llvm-project/compiler-rt/lib/builtins/parityti2.c b/contrib/llvm-project/compiler-rt/lib/builtins/parityti2.c
index 79e920d8a02d..011c8dd45562 100644
--- a/contrib/llvm-project/compiler-rt/lib/builtins/parityti2.c
+++ b/contrib/llvm-project/compiler-rt/lib/builtins/parityti2.c
@@ -18,8 +18,14 @@
COMPILER_RT_ABI int __parityti2(ti_int a) {
twords x;
+ dwords x2;
x.all = a;
- return __paritydi2(x.s.high ^ x.s.low);
+ x2.all = x.s.high ^ x.s.low;
+ su_int x3 = x2.s.high ^ x2.s.low;
+ x3 ^= x3 >> 16;
+ x3 ^= x3 >> 8;
+ x3 ^= x3 >> 4;
+ return (0x6996 >> (x3 & 0xF)) & 1;
}
#endif // CRT_HAS_128BIT