From patchwork Sun Jul 1 13:10:33 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 168385 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 8E2602C01D9 for ; Sun, 1 Jul 2012 23:10:53 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1341753054; h=Comment: DomainKey-Signature:Received:Received:Received:Received: MIME-Version:Received:Received:Date:Message-ID:Subject:From:To: Cc:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=mlnsTH8 LMCBXU+PZD5ZhTcCNRNY=; b=c+9P/5e3TceeMYoUk0gSZm3X2om2dLNuVF3TdDD Wr8D+PT6VPU6D5b93F13TcTummqoY9TkPF3a2gDnytBhA3telpihzDzVzKWBm6c7 wcS0/Ozpi/98x3l6EYBPADwamG5jddaHZnUF/tVKfR7rgQeG31dkSa1xdULZpYwf z/QQ= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:MIME-Version:Received:Received:Date:Message-ID:Subject:From:To:Cc:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=yCmPdvN0P7ZBOHJXIwPbs0LNHr+AESaz8gvfdYjrU++u3I04WpPgSI0gMuJgoq X/Z31O+aSDsO7XA6OvFTj6wZ+80VVuKmUF+t517msyQLZsj/R8/BQHF5RXXUWjkT 1QLEdCvfkTtDFU7mPTiCpGSTqonz8mtF5gCQEZjPiRvhg=; Received: (qmail 8782 invoked by alias); 1 Jul 2012 13:10:48 -0000 Received: (qmail 8130 invoked by uid 22791); 1 Jul 2012 13:10:47 -0000 X-SWARE-Spam-Status: No, hits=-4.1 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, KHOP_RCVD_TRUST, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE, TW_ZJ X-Spam-Check-By: sourceware.org Received: from mail-pz0-f47.google.com (HELO mail-pz0-f47.google.com) (209.85.210.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 01 Jul 2012 13:10:33 +0000 Received: by dalh21 with SMTP id h21so6495796dal.20 for ; Sun, 01 Jul 2012 06:10:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.66.75.162 with SMTP id d2mr14120104paw.59.1341148233088; Sun, 01 Jul 2012 06:10:33 -0700 (PDT) Received: by 10.66.11.130 with HTTP; Sun, 1 Jul 2012 06:10:33 -0700 (PDT) Date: Sun, 1 Jul 2012 15:10:33 +0200 Message-ID: Subject: [PATCH, i386]: Use __builtin_ia32_pause some more From: Uros Bizjak To: gcc-patches@gcc.gnu.org Cc: Richard Henderson , Jakub Jelinek , "H.J. Lu" Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hello! gcc/ 2012-07-01 Uros Bizjak * config/i386/xmmintrin.h (_mm_sfence): Use __builtin_ia32_pause. libgomp/ 2012-07-01 Uros Bizjak * config/linux/x86/futex.h (cpu_relax): Use __builtin_ia32_pause. * testsuite/libgomp.c/sort-1.c (busy_wait): Ditto. libitm/ 2012-07-01 Uros Bizjak * config/x86/target.h (cpu_relax): Use __builtin_ia32_pause. Bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}. OK for mainline? The patch needs approval from libgomp and libitm maintainers. Uros. Index: libitm/config/x86/target.h =================================================================== --- libitm/config/x86/target.h (revision 189100) +++ libitm/config/x86/target.h (working copy) @@ -63,7 +63,7 @@ typedef struct gtm_jmpbuf static inline void cpu_relax (void) { - __asm volatile ("rep; nop" : : : "memory"); + __builtin_ia32_pause (); } } // namespace GTM Index: gcc/config/i386/xmmintrin.h =================================================================== --- gcc/config/i386/xmmintrin.h (revision 189100) +++ gcc/config/i386/xmmintrin.h (working copy) @@ -1225,7 +1225,7 @@ _mm_sfence (void) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_pause (void) { - __asm__ __volatile__ ("rep; nop" : : ); + __builtin_ia32_pause (); } /* Transpose the 4x4 matrix composed of row[0-3]. */ Index: libgomp/config/linux/x86/futex.h =================================================================== --- libgomp/config/linux/x86/futex.h (revision 189100) +++ libgomp/config/linux/x86/futex.h (working copy) @@ -143,5 +143,5 @@ futex_wake (int *addr, int count) static inline void cpu_relax (void) { - __asm volatile ("rep; nop" : : : "memory"); + __builtin_ia32_pause (); } Index: libgomp/testsuite/libgomp.c/sort-1.c =================================================================== --- libgomp/testsuite/libgomp.c/sort-1.c (revision 189100) +++ libgomp/testsuite/libgomp.c/sort-1.c (working copy) @@ -100,7 +100,7 @@ static inline void busy_wait (void) { #if defined __i386__ || defined __x86_64__ - __asm volatile ("rep; nop" : : : "memory"); + __builtin_ia32_pause (); #elif defined __ia64__ __asm volatile ("hint @pause" : : : "memory"); #elif defined __sparc__ && (defined __arch64__ || defined __sparc_v9__)