From patchwork Thu Jan 11 17:57:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 25341 Received: (qmail 7025 invoked by alias); 11 Jan 2018 17:57:43 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 7011 invoked by uid 89); 11 Jan 2018 17:57:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-qk0-f196.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=7WtFYPW9zHaMh5Or5CWG2vtk6H7heCaU/uVxrp+q9/c=; b=JbQp+uJILWi83THp4sb3dpp34hKU4MeKPC3d/MBs1QIjb1daDarjtKzhmv6P2Q7WTV WCcwIJvoF9SQSkktsAOvA/bYYn/LsEdZihj72SxUmB1g0FdEFyTMhAmp+qwz2zDl23BZ CHOH2SOeAL68HW9C/sbwzl5f9XdLO12MBp6CD26noRUj66bmij4CVVpgDZx7nyWROmjw YmWZPHFB34KjxWctGp49zsnVvpp3mH+yX9I0ax2aqyHLzC+9WqjHL/keQKLHIHbLB7Q+ X13EIwOTFECAECGpR9tqTYGlIjNIs3UahOfXjEfFuxjHGUrWZPPTuqg1ULLJAxWUA10o zXTg== X-Gm-Message-State: AKwxytdzy6bpqrDv/a5Hulzd0M1TQtzRaEMPOB5O5NdX/a5whd7uAoiw xqkBeLe41bivtx278kcnCwrzXCcyjOw= X-Google-Smtp-Source: ACJfBotikIFZ5Bg7mxJUsxTOFVvib0pdqkyNVu0R5nyUjOr1MCell4Y04Ur9MtWgVvecIxrG/HAYjw== X-Received: by 10.55.94.2 with SMTP id s2mr34040975qkb.325.1515693459441; Thu, 11 Jan 2018 09:57:39 -0800 (PST) Subject: Re: [PATCH v3 03/18] Add string-maskoff.h generic header To: Joseph Myers Cc: libc-alpha@sourceware.org References: <1515588482-15744-1-git-send-email-adhemerval.zanella@linaro.org> <1515588482-15744-4-git-send-email-adhemerval.zanella@linaro.org> From: Adhemerval Zanella Message-ID: <2506af15-632d-0771-9350-16f58badf08d@linaro.org> Date: Thu, 11 Jan 2018 15:57:34 -0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: On 11/01/2018 11:29, Joseph Myers wrote: > On Wed, 10 Jan 2018, Adhemerval Zanella wrote: > >> +/* Provide a mask based on the pointer alignment that sets up non-zero >> + bytes before the beginning of the word. It is used to mask off >> + undesirable bits from an aligned read from an unaligned pointer. >> + For instance, on a 64 bits machine with a pointer alignment of >> + 3 the function returns 0x0000000000ffffff for LE and 0xffffff0000000000 > > Is there a missing "for BE" at the end of this line? > I applied the following patch based on Paul's suggestion: diff --git a/sysdeps/generic/string-maskoff.h b/sysdeps/generic/string-maskoff.h index 6231798..98e7852 100644 --- a/sysdeps/generic/string-maskoff.h +++ b/sysdeps/generic/string-maskoff.h @@ -47,18 +47,17 @@ repeat_bytes (unsigned char c_in) return ((op_t)-1 / 0xff) * c_in; } -/* Create a mask with high bit of each byte being 1, and the low 7 bits - being all the opposite of the input mask. It is used to mask off - undesirable bits from an aligned read from an unaligned pointer, - and also taking care to avoid match possible bytes meant to be - matched. For instance, on a 64 bits machine with a pointer alignment - of 3 the function returns 0x7f7f7f0000000000 (input meant to - be 0xffffff0000000000) for BE and 0x00000000007f7f7f for LE (input - meant to be 0x0000000000ffffff). */ +/* Based on mask created by 'create_mask', mask off the high bit of each + byte in the mask. It is used to mask off undesirable bits from an + aligned read from an unaligned pointer, and also taking care to avoid + match possible bytes meant to be matched. For instance, on a 64 bits + machine with a mask created from a pointer with an alignment of 3 + (0x0000000000ffffff) the function returns 0x7f7f7f0000000000 for BE + and 0x00000000007f7f7f for LE. */ static inline op_t highbit_mask (op_t m) { - return m & ~repeat_bytes (0x80); + return m & repeat_bytes (0x7f); } #endif /* STRING_MASKOFF_H */