26 lines · c
1//===-- paritydi2.c - Implement __paritydi2 -------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file implements __paritydi2 for the compiler_rt library.10//11//===----------------------------------------------------------------------===//12 13#include "int_lib.h"14 15// Returns: 1 if number of bits is odd else returns 016 17COMPILER_RT_ABI int __paritydi2(di_int a) {18 dwords x;19 x.all = a;20 su_int x2 = x.s.high ^ x.s.low;21 x2 ^= x2 >> 16;22 x2 ^= x2 >> 8;23 x2 ^= x2 >> 4;24 return (0x6996 >> (x2 & 0xF)) & 1;25}26