Commit 7cb032c3 authored by Erik de Castro Lopo's avatar Erik de Castro Lopo

Remove support for AMD's 3Dnow.

AMD stopped release new chips withe 3DNow in 2010.

Patch-from: lvqcl <lvqcl.mail@gmail.com>
parent 347afd87
......@@ -213,19 +213,6 @@ AC_DEFINE(FLAC__SSE_OS)
AH_TEMPLATE(FLAC__SSE_OS, [define if your operating system supports SSE instructions])
fi
AC_ARG_ENABLE(3dnow,
AC_HELP_STRING([--disable-3dnow], [Disable 3DNOW! optimizations]),
[case "${enableval}" in
yes) use_3dnow=true ;;
no) use_3dnow=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-3dnow) ;;
esac],[use_3dnow=true])
AM_CONDITIONAL(FLaC__USE_3DNOW, test "x$use_3dnow" = xtrue)
if test "x$use_3dnow" = xtrue ; then
AC_DEFINE(FLAC__USE_3DNOW)
AH_TEMPLATE(FLAC__USE_3DNOW, [define to enable use of 3Dnow! instructions])
fi
AC_ARG_ENABLE(altivec,
AC_HELP_STRING([--disable-altivec], [Disable Altivec optimizations]),
[case "${enableval}" in
......
......@@ -53,7 +53,7 @@ ifeq ($(OS),Solaris)
DEFINES = -DFLAC__NO_ASM -DFLAC__ALIGN_MALLOC_DATA
else
ifeq ($(PROC),i386)
DEFINES = -DFLAC__CPU_IA32 -DFLAC__USE_3DNOW -DFLAC__HAS_NASM -DFLAC__ALIGN_MALLOC_DATA
DEFINES = -DFLAC__CPU_IA32 -DFLAC__HAS_NASM -DFLAC__ALIGN_MALLOC_DATA
else
DEFINES = -DFLAC__ALIGN_MALLOC_DATA
endif
......
......@@ -76,12 +76,6 @@ static const unsigned FLAC__CPUINFO_IA32_CPUID_SSE3 = 0x00000001;
static const unsigned FLAC__CPUINFO_IA32_CPUID_SSSE3 = 0x00000200;
static const unsigned FLAC__CPUINFO_IA32_CPUID_SSE41 = 0x00080000;
static const unsigned FLAC__CPUINFO_IA32_CPUID_SSE42 = 0x00100000;
#ifdef FLAC__CPU_IA32
/* these are flags in EDX of CPUID AX=80000001 */
static const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_3DNOW = 0x80000000;
static const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXT3DNOW = 0x40000000;
static const unsigned FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXTMMX = 0x00400000;
#endif
/*
* Extra stuff needed for detection of OS support for SSE on IA-32
......@@ -137,9 +131,6 @@ void FLAC__cpu_info(FLAC__CPUInfo *info)
info->ia32.ssse3 = false;
info->ia32.sse41 = false;
info->ia32.sse42 = false;
info->ia32._3dnow = false;
info->ia32.ext3dnow = false;
info->ia32.extmmx = false;
if(info->ia32.cpuid == false)
return;
{
......@@ -159,15 +150,6 @@ void FLAC__cpu_info(FLAC__CPUInfo *info)
info->ia32.ssse3 = (flags_ecx & FLAC__CPUINFO_IA32_CPUID_SSSE3)? true : false;
info->ia32.sse41 = (flags_ecx & FLAC__CPUINFO_IA32_CPUID_SSE41)? true : false;
info->ia32.sse42 = (flags_ecx & FLAC__CPUINFO_IA32_CPUID_SSE42)? true : false;
#if defined FLAC__HAS_NASM && defined FLAC__USE_3DNOW
flags_edx = FLAC__cpu_info_extended_amd_asm_ia32();
info->ia32._3dnow = (flags_edx & FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_3DNOW )? true : false;
info->ia32.ext3dnow = (flags_edx & FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXT3DNOW)? true : false;
info->ia32.extmmx = (flags_edx & FLAC__CPUINFO_IA32_CPUID_EXTENDED_AMD_EXTMMX )? true : false;
#else
info->ia32._3dnow = info->ia32.ext3dnow = info->ia32.extmmx = false;
#endif
}
#ifdef DEBUG
fprintf(stderr, "CPU info (IA-32):\n");
......@@ -182,9 +164,6 @@ void FLAC__cpu_info(FLAC__CPUInfo *info)
fprintf(stderr, " SSSE3 ...... %c\n", info->ia32.ssse3 ? 'Y' : 'n');
fprintf(stderr, " SSE41 ...... %c\n", info->ia32.sse41 ? 'Y' : 'n');
fprintf(stderr, " SSE42 ...... %c\n", info->ia32.sse42 ? 'Y' : 'n');
fprintf(stderr, " 3DNow! ..... %c\n", info->ia32._3dnow ? 'Y' : 'n');
fprintf(stderr, " 3DNow!-ext . %c\n", info->ia32.ext3dnow? 'Y' : 'n');
fprintf(stderr, " 3DNow!-MMX . %c\n", info->ia32.extmmx ? 'Y' : 'n');
#endif
/*
......
......@@ -37,7 +37,6 @@
cglobal FLAC__cpu_have_cpuid_asm_ia32
cglobal FLAC__cpu_info_asm_ia32
cglobal FLAC__cpu_info_extended_amd_asm_ia32
code_section
......@@ -96,23 +95,4 @@ cident FLAC__cpu_info_asm_ia32
pop ebx
ret
cident FLAC__cpu_info_extended_amd_asm_ia32
push ebx
call FLAC__cpu_have_cpuid_asm_ia32
test eax, eax
jz .no_cpuid
mov eax, 0x80000000
cpuid
cmp eax, 0x80000001
jb .no_cpuid
mov eax, 0x80000001
cpuid
mov eax, edx
jmp .end
.no_cpuid:
xor eax, eax
.end:
pop ebx
ret
; end
......@@ -40,7 +40,6 @@ cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_4
cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_8
cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_12
cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_16
cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_3dnow
cglobal FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32
cglobal FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx
cglobal FLAC__lpc_compute_residual_from_qlp_coefficients_wide_asm_ia32
......@@ -712,127 +711,6 @@ cident FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_16
pop ebp
ret
ALIGN 16
cident FLAC__lpc_compute_autocorrelation_asm_ia32_3dnow
;[ebp + 32] autoc
;[ebp + 28] lag
;[ebp + 24] data_len
;[ebp + 20] data
push ebp
push ebx
push esi
push edi
mov ebp, esp
mov esi, [ebp + 20]
mov edi, [ebp + 24]
mov edx, [ebp + 28]
inc edx
and edx, byte -2
mov eax, edx
neg eax
and esp, byte -8
lea esp, [esp + 4 * eax]
mov ecx, edx
xor eax, eax
.loop0:
dec ecx
mov [esp + 4 * ecx], eax
jnz short .loop0
mov eax, edi
sub eax, edx
mov ebx, edx
and ebx, byte 1
sub eax, ebx
lea ecx, [esi + 4 * eax - 12]
cmp esi, ecx
mov eax, esi
ja short .loop2_pre
ALIGN 16 ;4 nops
.loop1_i:
movd mm0, [eax]
movd mm2, [eax + 4]
movd mm4, [eax + 8]
movd mm6, [eax + 12]
mov ebx, edx
punpckldq mm0, mm0
punpckldq mm2, mm2
punpckldq mm4, mm4
punpckldq mm6, mm6
ALIGN 16 ;3 nops
.loop1_j:
sub ebx, byte 2
movd mm1, [eax + 4 * ebx]
movd mm3, [eax + 4 * ebx + 4]
movd mm5, [eax + 4 * ebx + 8]
movd mm7, [eax + 4 * ebx + 12]
punpckldq mm1, mm3
punpckldq mm3, mm5
pfmul mm1, mm0
punpckldq mm5, mm7
pfmul mm3, mm2
punpckldq mm7, [eax + 4 * ebx + 16]
pfmul mm5, mm4
pfmul mm7, mm6
pfadd mm1, mm3
movq mm3, [esp + 4 * ebx]
pfadd mm5, mm7
pfadd mm1, mm5
pfadd mm3, mm1
movq [esp + 4 * ebx], mm3
jg short .loop1_j
add eax, byte 16
cmp eax, ecx
jb short .loop1_i
.loop2_pre:
mov ebx, eax
sub eax, esi
shr eax, 2
lea ecx, [esi + 4 * edi]
mov esi, ebx
.loop2_i:
movd mm0, [esi]
mov ebx, edi
sub ebx, eax
cmp ebx, edx
jbe short .loop2_j
mov ebx, edx
.loop2_j:
dec ebx
movd mm1, [esi + 4 * ebx]
pfmul mm1, mm0
movd mm2, [esp + 4 * ebx]
pfadd mm1, mm2
movd [esp + 4 * ebx], mm1
jnz short .loop2_j
add esi, byte 4
inc eax
cmp esi, ecx
jnz short .loop2_i
mov edi, [ebp + 32]
mov edx, [ebp + 28]
.loop3:
dec edx
mov eax, [esp + 4 * edx]
mov [edi + 4 * edx], eax
jnz short .loop3
femms
mov esp, ebp
pop edi
pop esi
pop ebx
pop ebp
ret
;void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[])
;
; for(i = 0; i < data_len; i++) {
......
......@@ -101,9 +101,6 @@ typedef struct {
FLAC__bool ssse3;
FLAC__bool sse41;
FLAC__bool sse42;
FLAC__bool _3dnow;
FLAC__bool ext3dnow;
FLAC__bool extmmx;
} FLAC__CPUInfo_IA32;
#elif defined FLAC__CPU_X86_64
typedef struct {
......@@ -131,7 +128,6 @@ void FLAC__cpu_info(FLAC__CPUInfo *info);
#if defined FLAC__CPU_IA32 && defined FLAC__HAS_NASM
FLAC__uint32 FLAC__cpu_have_cpuid_asm_ia32(void);
void FLAC__cpu_info_asm_ia32(FLAC__uint32 *flags_edx, FLAC__uint32 *flags_ecx);
FLAC__uint32 FLAC__cpu_info_extended_amd_asm_ia32(void);
#endif
#if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_X86INTRIN
......
......@@ -77,7 +77,6 @@ void FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_4(const FLAC__real data[
void FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_8(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]);
void FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_12(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]);
void FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_16(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]);
void FLAC__lpc_compute_autocorrelation_asm_ia32_3dnow(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]);
# endif
# endif
# if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_X86INTRIN
......
......@@ -41,7 +41,7 @@
AdditionalOptions="/D &quot;_USE_MATH_DEFINES&quot;"
Optimization="0"
AdditionalIncludeDirectories=".\include;..\..\include"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__USE_3DNOW;FLAC__ALIGN_MALLOC_DATA;VERSION=\&quot;1.3.0\&quot;;DEBUG;FLAC__OVERFLOW_DETECT"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION=\&quot;1.3.0\&quot;;DEBUG;FLAC__OVERFLOW_DETECT"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
......@@ -122,7 +122,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories=".\include;..\..\include"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__USE_3DNOW;FLAC__ALIGN_MALLOC_DATA;VERSION=\&quot;1.3.0\&quot;;FLaC__INLINE=_inline"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION=\&quot;1.3.0\&quot;;FLaC__INLINE=_inline"
RuntimeLibrary="0"
BufferSecurityCheck="false"
UsePrecompiledHeader="0"
......
......@@ -82,7 +82,7 @@
<AdditionalOptions>/D "_USE_MATH_DEFINES" %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_NASM;FLAC__USE_3DNOW;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.0";DEBUG;FLAC__OVERFLOW_DETECT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.0";DEBUG;FLAC__OVERFLOW_DETECT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
......@@ -127,7 +127,7 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>.\include;..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_NASM;FLAC__USE_3DNOW;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.0";FLaC__INLINE=_inline;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.0";FLaC__INLINE=_inline;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<WarningLevel>Level3</WarningLevel>
......
......@@ -41,7 +41,7 @@
AdditionalOptions="/D &quot;_USE_MATH_DEFINES&quot;"
Optimization="0"
AdditionalIncludeDirectories=".\include;..\..\include"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__USE_3DNOW;FLAC__ALIGN_MALLOC_DATA;VERSION=\&quot;1.3.0\&quot;;FLAC__NO_DLL;DEBUG;FLAC__OVERFLOW_DETECT"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION=\&quot;1.3.0\&quot;;FLAC__NO_DLL;DEBUG;FLAC__OVERFLOW_DETECT"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
......@@ -110,7 +110,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories=".\include;..\..\include"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__USE_3DNOW;FLAC__ALIGN_MALLOC_DATA;VERSION=\&quot;1.3.0\&quot;;FLAC__NO_DLL;FLaC__INLINE=_inline"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION=\&quot;1.3.0\&quot;;FLAC__NO_DLL;FLaC__INLINE=_inline"
RuntimeLibrary="0"
BufferSecurityCheck="false"
UsePrecompiledHeader="0"
......
......@@ -74,7 +74,7 @@
<AdditionalOptions>/D "_USE_MATH_DEFINES" %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_NASM;FLAC__USE_3DNOW;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.0";FLAC__NO_DLL;DEBUG;FLAC__OVERFLOW_DETECT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.0";FLAC__NO_DLL;DEBUG;FLAC__OVERFLOW_DETECT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
......@@ -106,7 +106,7 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>.\include;..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_NASM;FLAC__USE_3DNOW;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.0";FLAC__NO_DLL;FLaC__INLINE=_inline;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_NASM;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.0";FLAC__NO_DLL;FLaC__INLINE=_inline;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<WarningLevel>Level3</WarningLevel>
......
......@@ -906,8 +906,6 @@ static FLAC__StreamEncoderInitStatus init_stream_internal_(
else
encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_asm_ia32;
}
else if(encoder->private_->cpuinfo.ia32._3dnow)
encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_asm_ia32_3dnow; /* obsolete instruction set */
else
encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_asm_ia32;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment