annotate src/flac/libflac/cpu.c @ 925:3673bbab7372 trunk

[svn] - make madplug ignore crc error. closes #884.
author yaz
date Mon, 09 Apr 2007 03:51:00 -0700
parents 454ad11020ec
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
715
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
1 /* libFLAC - Free Lossless Audio Codec library
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
2 * Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
3 *
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
4 * Redistribution and use in source and binary forms, with or without
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
5 * modification, are permitted provided that the following conditions
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
6 * are met:
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
7 *
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
8 * - Redistributions of source code must retain the above copyright
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
9 * notice, this list of conditions and the following disclaimer.
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
10 *
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
11 * - Redistributions in binary form must reproduce the above copyright
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
12 * notice, this list of conditions and the following disclaimer in the
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
13 * documentation and/or other materials provided with the distribution.
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
14 *
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
15 * - Neither the name of the Xiph.org Foundation nor the names of its
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
16 * contributors may be used to endorse or promote products derived from
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
17 * this software without specific prior written permission.
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
18 *
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
30 */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
31
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
32 #if HAVE_CONFIG_H
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
33 # include <config.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
34 #endif
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
35
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
36 #include "private/cpu.h"
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
37 #include <stdlib.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
38 #include <stdio.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
39
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
40 #if defined FLAC__CPU_PPC
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
41 # if !defined FLAC__NO_ASM
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
42 # if defined FLAC__SYS_DARWIN
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
43 # include <sys/sysctl.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
44 # include <mach/mach.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
45 # include <mach/mach_host.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
46 # include <mach/host_info.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
47 # include <mach/machine.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
48 # ifndef CPU_SUBTYPE_POWERPC_970
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
49 # define CPU_SUBTYPE_POWERPC_970 ((cpu_subtype_t) 100)
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
50 # endif
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
51 # else /* FLAC__SYS_DARWIN */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
52
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
53 # ifdef __FreeBSD__
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
54 # include <sys/types.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
55 # include <sys/sysctl.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
56 # endif
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
57
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
58 # include <signal.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
59 # include <setjmp.h>
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
60
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
61 static sigjmp_buf jmpbuf;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
62 static volatile sig_atomic_t canjump = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
63
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
64 static void sigill_handler (int sig)
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
65 {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
66 if (!canjump) {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
67 signal (sig, SIG_DFL);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
68 raise (sig);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
69 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
70 canjump = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
71 siglongjmp (jmpbuf, 1);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
72 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
73 # endif /* FLAC__SYS_DARWIN */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
74 # endif /* FLAC__NO_ASM */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
75 #endif /* FLAC__CPU_PPC */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
76
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
77 const unsigned FLAC__CPUINFO_IA32_CPUID_CMOV = 0x00008000;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
78 const unsigned FLAC__CPUINFO_IA32_CPUID_MMX = 0x00800000;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
79 const unsigned FLAC__CPUINFO_IA32_CPUID_FXSR = 0x01000000;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
80 const unsigned FLAC__CPUINFO_IA32_CPUID_SSE = 0x02000000;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
81 const unsigned FLAC__CPUINFO_IA32_CPUID_SSE2 = 0x04000000;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
82
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
83 const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_3DNOW = 0x80000000;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
84 const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXT3DNOW = 0x40000000;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
85 const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXTMMX = 0x00400000;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
86
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
87
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
88 void FLAC__cpu_info(FLAC__CPUInfo *info)
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
89 {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
90 #ifdef FLAC__CPU_IA32
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
91 info->type = FLAC__CPUINFO_TYPE_IA32;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
92 #if !defined FLAC__NO_ASM && defined FLAC__HAS_NASM
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
93 info->use_asm = true;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
94 {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
95 unsigned cpuid = FLAC__cpu_info_asm_ia32();
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
96 info->data.ia32.cmov = (cpuid & FLAC__CPUINFO_IA32_CPUID_CMOV)? true : false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
97 info->data.ia32.mmx = (cpuid & FLAC__CPUINFO_IA32_CPUID_MMX)? true : false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
98 info->data.ia32.fxsr = (cpuid & FLAC__CPUINFO_IA32_CPUID_FXSR)? true : false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
99 info->data.ia32.sse = (cpuid & FLAC__CPUINFO_IA32_CPUID_SSE)? true : false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
100 info->data.ia32.sse2 = (cpuid & FLAC__CPUINFO_IA32_CPUID_SSE2)? true : false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
101
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
102 #ifndef FLAC__SSE_OS
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
103 info->data.ia32.fxsr = info->data.ia32.sse = info->data.ia32.sse2 = false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
104 #elif defined(__FreeBSD__)
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
105 /* on FreeBSD we can double-check via sysctl whether the OS supports SSE */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
106 {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
107 int sse;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
108 size_t len = sizeof(sse);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
109 if (sysctlbyname("hw.instruction_sse", &sse, &len, NULL, 0) || !sse)
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
110 info->data.ia32.fxsr = info->data.ia32.sse = info->data.ia32.sse2 = false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
111 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
112 #endif
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
113
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
114 #ifdef FLAC__USE_3DNOW
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
115 cpuid = FLAC__cpu_info_extended_amd_asm_ia32();
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
116 info->data.ia32._3dnow = (cpuid & FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_3DNOW)? true : false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
117 info->data.ia32.ext3dnow = (cpuid & FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXT3DNOW)? true : false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
118 info->data.ia32.extmmx = (cpuid & FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXTMMX)? true : false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
119 #else
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
120 info->data.ia32._3dnow = info->data.ia32.ext3dnow = info->data.ia32.extmmx = false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
121 #endif
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
122 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
123 #else
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
124 info->use_asm = false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
125 #endif
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
126 #elif defined FLAC__CPU_PPC
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
127 info->type = FLAC__CPUINFO_TYPE_PPC;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
128 #if !defined FLAC__NO_ASM
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
129 info->use_asm = true;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
130 #ifdef FLAC__USE_ALTIVEC
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
131 #if defined FLAC__SYS_DARWIN
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
132 {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
133 int selectors[2] = { CTL_HW, HW_VECTORUNIT };
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
134 int result = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
135 size_t length = sizeof(result);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
136 int error = sysctl(selectors, 2, &result, &length, 0, 0);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
137
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
138 info->data.ppc.altivec = error==0 ? result!=0 : 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
139 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
140 {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
141 host_basic_info_data_t hostInfo;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
142 mach_msg_type_number_t infoCount;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
143
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
144 infoCount = HOST_BASIC_INFO_COUNT;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
145 host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
146
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
147 info->data.ppc.ppc64 = (hostInfo.cpu_type == CPU_TYPE_POWERPC) && (hostInfo.cpu_subtype == CPU_SUBTYPE_POWERPC_970);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
148 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
149 #else /* FLAC__SYS_DARWIN */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
150 {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
151 /* no Darwin, do it the brute-force way */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
152 /* this is borrowed from MPlayer from the libmpeg2 library */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
153 info->data.ppc.altivec = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
154 info->data.ppc.ppc64 = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
155
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
156 signal (SIGILL, sigill_handler);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
157 if (!sigsetjmp (jmpbuf, 1)) {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
158 canjump = 1;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
159
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
160 asm volatile (
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
161 "mtspr 256, %0\n\t"
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
162 "vand %%v0, %%v0, %%v0"
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
163 :
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
164 : "r" (-1)
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
165 );
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
166
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
167 info->data.ppc.altivec = 1;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
168 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
169 canjump = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
170 if (!sigsetjmp (jmpbuf, 1)) {
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
171 int x = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
172 canjump = 1;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
173
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
174 /* PPC64 hardware implements the cntlzd instruction */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
175 asm volatile ("cntlzd %0, %1" : "=r" (x) : "r" (x) );
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
176
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
177 info->data.ppc.ppc64 = 1;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
178 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
179 signal (SIGILL, SIG_DFL);
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
180 }
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
181 #endif /* FLAC__SYS_DARWIN */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
182 #else /* FLAC__USE_ALTIVEC */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
183 info->data.ppc.altivec = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
184 info->data.ppc.ppc64 = 0;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
185 #endif /* FLAC__USE_ALTIVEC */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
186 #else /* FLAC__NO_ASM */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
187 info->use_asm = false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
188 #endif /* FLAC__NO_ASM */
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
189 #else
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
190 info->type = FLAC__CPUINFO_TYPE_UNKNOWN;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
191 info->use_asm = false;
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
192 #endif
a9b178bc4ae4 [svn] Import flac. Please test.
js
parents:
diff changeset
193 }