From patchwork Fri Dec 4 17:27:45 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Senkevich X-Patchwork-Id: 9890 Received: (qmail 124141 invoked by alias); 4 Dec 2015 17:28:19 -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 124129 invoked by uid 89); 4 Dec 2015 17:28:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-lb0-f178.google.com X-Received: by 10.112.25.40 with SMTP id z8mr8838043lbf.13.1449250094630; Fri, 04 Dec 2015 09:28:14 -0800 (PST) MIME-Version: 1.0 In-Reply-To: References: From: Andrew Senkevich Date: Fri, 4 Dec 2015 20:27:45 +0300 Message-ID: Subject: Re: [PATCH] x86_64: Utilize vector math functions w/o -fopenmp To: Joseph Myers Cc: libc-alpha 2015-12-04 18:46 GMT+03:00 Joseph Myers : > On Fri, 4 Dec 2015, Andrew Senkevich wrote: > >> +# elif __GNUC_PREREQ (6,0) >> +/* W/o OpenMP use GCC 6.* __attribute__((__simd__)). */ >> +# define __ATTR_SIMD_x86_64 __attribute__((__simd__("notinbranch"))) >> +# undef __DECL_SIMD_cos >> +# define __DECL_SIMD_cos __ATTR_SIMD_x86_64 > > Why do you need to duplicate the list of functions? It would seem better > to define __DECL_SIMD_x86_64 with two different definitions depending on > the macros predefined by the compiler, then define all the > __DECL_SIMD_ macros if __DECL_SIMD_x86_64 has been defined. > > # if defined _OPENMP && _OPENMP >= 201307 > # define __DECL_SIMD_x86_64 ... > # elif __GNUC_PREREQ (6,0) > # define __DECL_SIMD_x86_64 ... > # endif > # ifdef __DECL_SIMD_x86_64 > # undef __DECL_SIMD_cos > # define __DECL_SIMD_cos __DECL_SIMD_x86_64 > etc. Indeed, and patch became much shorter --- WBR, Andrew diff --git a/sysdeps/x86/fpu/bits/math-vector.h b/sysdeps/x86/fpu/bits/math-vector.h index f3bfb86..13d720e 100644 --- a/sysdeps/x86/fpu/bits/math-vector.h +++ b/sysdeps/x86/fpu/bits/math-vector.h @@ -28,6 +28,12 @@ # if defined _OPENMP && _OPENMP >= 201307 /* OpenMP case. */ # define __DECL_SIMD_x86_64 _Pragma ("omp declare simd notinbranch") +# elif __GNUC_PREREQ (6,0) +/* W/o OpenMP use GCC 6.* __attribute__((__simd__)). */ +# define __DECL_SIMD_x86_64 __attribute__((__simd__("notinbranch"))) +# endif + +# ifdef __DECL_SIMD_x86_64 # undef __DECL_SIMD_cos # define __DECL_SIMD_cos __DECL_SIMD_x86_64 # undef __DECL_SIMD_cosf