Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(194)

Side by Side Diff: third_party/libjpeg_turbo/simd/jsimdcpu.asm

Issue 4134011: Adds libjpeg-turbo to deps... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 ;
2 ; jsimdcpu.asm - SIMD instruction support check
3 ;
4 ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5 ;
6 ; Based on
7 ; x86 SIMD extension for IJG JPEG library
8 ; Copyright (C) 1999-2006, MIYASAKA Masaru.
9 ; For conditions of distribution and use, see copyright notice in jsimdext.inc
10 ;
11 ; This file should be assembled with NASM (Netwide Assembler),
12 ; can *not* be assembled with Microsoft's MASM or any compatible
13 ; assembler (including Borland's Turbo Assembler).
14 ; NASM is available from http://nasm.sourceforge.net/ or
15 ; http://sourceforge.net/project/showfiles.php?group_id=6208
16 ;
17 ; [TAB8]
18
19 %include "jsimdext.inc"
20
21 ; --------------------------------------------------------------------------
22 SECTION SEG_TEXT
23 BITS 32
24 ;
25 ; Check if the CPU supports SIMD instructions
26 ;
27 ; GLOBAL(unsigned int)
28 ; jpeg_simd_cpu_support (void)
29 ;
30
31 align 16
32 global EXTN(jpeg_simd_cpu_support)
33
34 EXTN(jpeg_simd_cpu_support):
35 push ebx
36 ; push ecx ; need not be preserved
37 ; push edx ; need not be preserved
38 ; push esi ; unused
39 push edi
40
41 xor edi,edi ; simd support flag
42
43 pushfd
44 pop eax
45 mov edx,eax
46 xor eax, 1<<21 ; flip ID bit in EFLAGS
47 push eax
48 popfd
49 pushfd
50 pop eax
51 xor eax,edx
52 jz short .return ; CPUID is not supported
53
54 ; Check for MMX instruction support
55 xor eax,eax
56 cpuid
57 test eax,eax
58 jz short .return
59
60 xor eax,eax
61 inc eax
62 cpuid
63 mov eax,edx ; eax = Standard feature flags
64
65 test eax, 1<<23 ; bit23:MMX
66 jz short .no_mmx
67 or edi, byte JSIMD_MMX
68 .no_mmx:
69 test eax, 1<<25 ; bit25:SSE
70 jz short .no_sse
71 or edi, byte JSIMD_SSE
72 .no_sse:
73 test eax, 1<<26 ; bit26:SSE2
74 jz short .no_sse2
75 or edi, byte JSIMD_SSE2
76 .no_sse2:
77
78 ; Check for 3DNow! instruction support
79 mov eax, 0x80000000
80 cpuid
81 cmp eax, 0x80000000
82 jbe short .return
83
84 mov eax, 0x80000001
85 cpuid
86 mov eax,edx ; eax = Extended feature flags
87
88 test eax, 1<<31 ; bit31:3DNow!(vendor independent)
89 jz short .no_3dnow
90 or edi, byte JSIMD_3DNOW
91 .no_3dnow:
92
93 .return:
94 mov eax,edi
95
96 pop edi
97 ; pop esi ; unused
98 ; pop edx ; need not be preserved
99 ; pop ecx ; need not be preserved
100 pop ebx
101 ret
102
103 ; For some reason, the OS X linker does not honor the request to align the
104 ; segment unless we do this.
105 align 16
OLDNEW
« no previous file with comments | « third_party/libjpeg_turbo/simd/jsimdcfg.inc.h ('k') | third_party/libjpeg_turbo/simd/jsimdext.inc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698