Mercurial > hg > sv-dependency-builds
annotate src/fftw-3.3.3/simd-support/avx.c @ 10:37bf6b4a2645
Add FFTW3
author | Chris Cannam |
---|---|
date | Wed, 20 Mar 2013 15:35:50 +0000 |
parents | |
children |
rev | line source |
---|---|
Chris@10 | 1 /* |
Chris@10 | 2 * Copyright (c) 2003, 2007-11 Matteo Frigo |
Chris@10 | 3 * Copyright (c) 2003, 2007-11 Massachusetts Institute of Technology |
Chris@10 | 4 * |
Chris@10 | 5 * This program is free software; you can redistribute it and/or modify |
Chris@10 | 6 * it under the terms of the GNU General Public License as published by |
Chris@10 | 7 * the Free Software Foundation; either version 2 of the License, or |
Chris@10 | 8 * (at your option) any later version. |
Chris@10 | 9 * |
Chris@10 | 10 * This program is distributed in the hope that it will be useful, |
Chris@10 | 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
Chris@10 | 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
Chris@10 | 13 * GNU General Public License for more details. |
Chris@10 | 14 * |
Chris@10 | 15 * You should have received a copy of the GNU General Public License |
Chris@10 | 16 * along with this program; if not, write to the Free Software |
Chris@10 | 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
Chris@10 | 18 * |
Chris@10 | 19 */ |
Chris@10 | 20 |
Chris@10 | 21 |
Chris@10 | 22 #include "ifftw.h" |
Chris@10 | 23 |
Chris@10 | 24 #if HAVE_AVX |
Chris@10 | 25 |
Chris@10 | 26 #if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) |
Chris@10 | 27 |
Chris@10 | 28 #include "amd64-cpuid.h" |
Chris@10 | 29 |
Chris@10 | 30 int X(have_simd_avx)(void) |
Chris@10 | 31 { |
Chris@10 | 32 static int init = 0, res; |
Chris@10 | 33 |
Chris@10 | 34 if (!init) { |
Chris@10 | 35 res = 1 |
Chris@10 | 36 && ((cpuid_ecx(1) & 0x18000000) == 0x18000000) |
Chris@10 | 37 && ((xgetbv_eax(0) & 0x6) == 0x6); |
Chris@10 | 38 init = 1; |
Chris@10 | 39 } |
Chris@10 | 40 return res; |
Chris@10 | 41 } |
Chris@10 | 42 |
Chris@10 | 43 #else /* 32-bit code */ |
Chris@10 | 44 |
Chris@10 | 45 #include "x86-cpuid.h" |
Chris@10 | 46 |
Chris@10 | 47 int X(have_simd_avx)(void) |
Chris@10 | 48 { |
Chris@10 | 49 static int init = 0, res; |
Chris@10 | 50 |
Chris@10 | 51 if (!init) { |
Chris@10 | 52 res = !is_386() |
Chris@10 | 53 && has_cpuid() |
Chris@10 | 54 && ((cpuid_ecx(1) & 0x18000000) == 0x18000000) |
Chris@10 | 55 && ((xgetbv_eax(0) & 0x6) == 0x6); |
Chris@10 | 56 init = 1; |
Chris@10 | 57 } |
Chris@10 | 58 return res; |
Chris@10 | 59 } |
Chris@10 | 60 #endif |
Chris@10 | 61 |
Chris@10 | 62 #endif |