From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-4.3 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 4F92D1F487 for ; Sun, 29 Mar 2020 09:00:54 +0000 (UTC) Received: from localhost ([::1]:35410 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jIToL-0008C7-Ep for normalperson@yhbt.net; Sun, 29 Mar 2020 05:00:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32865) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jIToH-0008By-0E for bug-gnulib@gnu.org; Sun, 29 Mar 2020 05:00:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jIToG-0006NZ-1p for bug-gnulib@gnu.org; Sun, 29 Mar 2020 05:00:48 -0400 Received: from mail-io1-xd32.google.com ([2607:f8b0:4864:20::d32]:39540) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jIToF-0006Mg-UA for bug-gnulib@gnu.org; Sun, 29 Mar 2020 05:00:48 -0400 Received: by mail-io1-xd32.google.com with SMTP id c19so14408133ioo.6 for ; Sun, 29 Mar 2020 02:00:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:reply-to:from:date:message-id:subject:to; bh=V4VvOOc/I+FoaadQ2sJ1eEXNMn4pNVbBjy4SW7FfHl0=; b=I2TLrQ8na5AP13IH53Fm6e5HezQtdVomiakopbqPj/YOWl5pScllbeo6Mqqv09LTrh A1z4nK8PThBPvvChG4hjUrJi4Gznva5u0pask8QVnhGTeTHer0fa3ugk8b1U1vS819IU LHXmA4zn7SVpGOX4WYRC0wqnCcQBhvV5p2ER8n2/lbAqH8tn4vETCCb295CHyoINsFkN z22Zn6M0B0uz1Z7J2dkLtvKraJjycaQqGNUzo4T9YLlqWHpHBd9VLLZin/PTrnhzHZDh LndCkc3qpM5nTv+ce+PVredL9MsCEutN/QpXqaMzC55kW5xRVPZW/um09+gD3cFOQDXI aj+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:from:date:message-id :subject:to; bh=V4VvOOc/I+FoaadQ2sJ1eEXNMn4pNVbBjy4SW7FfHl0=; b=gTHiyLX6IpHjtOyIWG3W8Bye9wdY8ekCOmk9gIPtmpa1QEeudGEwBqa7UULSIG7sdG S7G10598KTcNQSgC0AA78LTsq7z2MiP19h+fM+kssmu+xAWhKZAggAEO63Q0C70bnbSU 3T/8uxq90eZvr3cobjdXJVOlQORnei6HScJt1SmTA5C3898yWPU9Dzfsvrmsp5r8gkrf Co2r+/kvxFOGB4SE0943xFkopwnZxPwoH/wcWuBO6WUMN2lOKXzzllnhT/M5QiNZGhdV ajOCAopWAE8qHrEALQUpWH4e4hP8d3bNSLyawTrSPeNOxRizoRbxSHCh8cPr3mjuP7Lu z+HA== X-Gm-Message-State: ANhLgQ0IUDMsmmBQjMKaDZG423UwbxDaOJCVSihUnvxErElYp/uZIte/ k+dfTXzDnuTHG9rOY9zYcf4WgLdj5UQqB8mCWQ+BxlFsF+A= X-Google-Smtp-Source: ADFU+vtUnA6fXLpu/JUPs2pH4WaJkjGw0rnqocqiCd1L+RWcTviMgVFShAXGeM6iMfpG8WH/9RTfasswJVfB8dFuuSI= X-Received: by 2002:a02:2a4a:: with SMTP id w71mr6264783jaw.75.1585472446040; Sun, 29 Mar 2020 02:00:46 -0700 (PDT) MIME-Version: 1.0 From: Jeffrey Walton Date: Sun, 29 Mar 2020 05:00:35 -0400 Message-ID: Subject: test-bitrotate.c missing test cases To: bug-gnulib@gnu.org Content-Type: text/plain; charset="UTF-8" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::d32 X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: noloader@gmail.com Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: "bug-gnulib" Hi Everyone, It looks like test-bitrotate.c is missing test cases. It is missing the 32-bit rotl and rotr of 0-bits. The 0-bit rotate should tickle undefined behavior. If you want to clear the undefined behavior, then use this code. It is recognized by Clang, GCC, ICC. It will be compiled down to a single instruction on platforms like IA-32. I can find the mailing list messages for a citation, if needed. BITROTATE_INLINE uint32_t rotl32 (uint32_t x, int n) { return ((x << n) | ( x>>(-n&31)); } BITROTATE_INLINE uint32_t rotr32 (uint32_t x, int n) { return ((x >> n) | ( x<<(-n&31)); } Ditto for the other rotates, like rotl64 and rotr64. The 64-bit rotates should use a mask of 63 instead of 31. Jeff