From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3670 invoked by alias); 7 Oct 2014 21:01:36 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 3587 invoked by uid 48); 7 Oct 2014 21:01:31 -0000 From: "glisse at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/63464] compare one character to many: faster Date: Tue, 07 Oct 2014 21:01:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 5.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: enhancement X-Bugzilla-Who: glisse at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-10/txt/msg00512.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63464 --- Comment #7 from Marc Glisse --- The SLP version is slightly slower than the bit test in this case (at least on my old desktop), but it can more easily handle testing for characters that are not within 64 of each other. __m128i b=_mm_set1_epi8(*s); __m128i m=_mm_set_epi8('\n','\r',',',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '); __m128i e=_mm_cmpeq_epi8(b,m); bool found=_mm_movemask_epi8(e)!=0; Though we are missing REDUC_TRUTH_OR_EXPR to model the last line.