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

Side by Side Diff: source/libvpx/vpx_ports/x86_abi_support.asm

Issue 7671004: Update libvpx snapshot to v0.9.7-p1 (Cayuga). (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: '' Created 9 years, 4 months 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
« no previous file with comments | « source/libvpx/vpx_ports/x86.h ('k') | source/libvpx/vpx_scale/arm/nds/yv12extend.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; 1 ;
2 ; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2 ; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 ; 3 ;
4 ; Use of this source code is governed by a BSD-style license 4 ; Use of this source code is governed by a BSD-style license
5 ; that can be found in the LICENSE file in the root of the source 5 ; that can be found in the LICENSE file in the root of the source
6 ; tree. An additional intellectual property rights grant can be found 6 ; tree. An additional intellectual property rights grant can be found
7 ; in the file PATENTS. All contributing project authors may 7 ; in the file PATENTS. All contributing project authors may
8 ; be found in the AUTHORS file in the root of the source tree. 8 ; be found in the AUTHORS file in the root of the source tree.
9 ; 9 ;
10 10
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 ; 140 ;
141 %idefine PTR 141 %idefine PTR
142 %idefine XMMWORD 142 %idefine XMMWORD
143 %idefine MMWORD 143 %idefine MMWORD
144 144
145 ; PIC macros 145 ; PIC macros
146 ; 146 ;
147 %if ABI_IS_32BIT 147 %if ABI_IS_32BIT
148 %if CONFIG_PIC=1 148 %if CONFIG_PIC=1
149 %ifidn __OUTPUT_FORMAT__,elf32 149 %ifidn __OUTPUT_FORMAT__,elf32
150 %define GET_GOT_SAVE_ARG 1
150 %define WRT_PLT wrt ..plt 151 %define WRT_PLT wrt ..plt
151 %macro GET_GOT 1 152 %macro GET_GOT 1
152 extern _GLOBAL_OFFSET_TABLE_ 153 extern _GLOBAL_OFFSET_TABLE_
153 push %1 154 push %1
154 call %%get_got 155 call %%get_got
155 %%sub_offset: 156 %%sub_offset:
156 jmp %%exitGG 157 jmp %%exitGG
157 %%get_got: 158 %%get_got:
158 mov %1, [esp] 159 mov %1, [esp]
159 add %1, _GLOBAL_OFFSET_TABLE_ + $$ - %%sub_offset wrt ..gotpc 160 add %1, _GLOBAL_OFFSET_TABLE_ + $$ - %%sub_offset wrt ..gotpc
160 ret 161 ret
161 %%exitGG: 162 %%exitGG:
162 %undef GLOBAL 163 %undef GLOBAL
163 %define GLOBAL(x) x + %1 wrt ..gotoff 164 %define GLOBAL(x) x + %1 wrt ..gotoff
164 %undef RESTORE_GOT 165 %undef RESTORE_GOT
165 %define RESTORE_GOT pop %1 166 %define RESTORE_GOT pop %1
166 %endmacro 167 %endmacro
167 %elifidn __OUTPUT_FORMAT__,macho32 168 %elifidn __OUTPUT_FORMAT__,macho32
169 %define GET_GOT_SAVE_ARG 1
168 %macro GET_GOT 1 170 %macro GET_GOT 1
169 push %1 171 push %1
170 call %%get_got 172 call %%get_got
171 %%get_got: 173 %%get_got:
172 pop %1 174 pop %1
173 %undef GLOBAL 175 %undef GLOBAL
174 %define GLOBAL(x) x + %1 - %%get_got 176 %define GLOBAL(x) x + %1 - %%get_got
175 %undef RESTORE_GOT 177 %undef RESTORE_GOT
176 %define RESTORE_GOT pop %1 178 %define RESTORE_GOT pop %1
177 %endmacro 179 %endmacro
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 mov rax,[rbp+off] 250 mov rax,[rbp+off]
249 push rax 251 push rax
250 %assign off off+8 252 %assign off off+8
251 %endrep 253 %endrep
252 %endif 254 %endif
253 %endm 255 %endm
254 %endif 256 %endif
255 %define UNSHADOW_ARGS mov rsp, rbp 257 %define UNSHADOW_ARGS mov rsp, rbp
256 %endif 258 %endif
257 259
258 ; must keep XMM6:XMM15 (libvpx uses XMM6 and XMM7) on Win64 ABI 260 ; Win64 ABI requires that XMM6:XMM15 are callee saved
259 ; rsp register has to be aligned 261 ; SAVE_XMM n, [u]
262 ; store registers 6-n on the stack
263 ; if u is specified, use unaligned movs.
264 ; Win64 ABI requires 16 byte stack alignment, but then pushes an 8 byte return
265 ; value. Typically we follow this up with 'push rbp' - re-aligning the stack -
266 ; but in some cases this is not done and unaligned movs must be used.
260 %ifidn __OUTPUT_FORMAT__,x64 267 %ifidn __OUTPUT_FORMAT__,x64
261 %macro SAVE_XMM 0 268 %macro SAVE_XMM 1-2 a
262 sub rsp, 32 269 %if %1 < 6
263 movdqa XMMWORD PTR [rsp], xmm6 270 %error Only xmm registers 6-15 must be preserved
264 movdqa XMMWORD PTR [rsp+16], xmm7 271 %else
272 %assign last_xmm %1
273 %define movxmm movdq %+ %2
274 %assign xmm_stack_space ((last_xmm - 5) * 16)
275 sub rsp, xmm_stack_space
276 %assign i 6
277 %rep (last_xmm - 5)
278 movxmm [rsp + ((i - 6) * 16)], xmm %+ i
279 %assign i i+1
280 %endrep
281 %endif
265 %endmacro 282 %endmacro
266 %macro RESTORE_XMM 0 283 %macro RESTORE_XMM 0
267 movdqa xmm6, XMMWORD PTR [rsp] 284 %ifndef last_xmm
268 movdqa xmm7, XMMWORD PTR [rsp+16] 285 %error RESTORE_XMM must be paired with SAVE_XMM n
269 add rsp, 32 286 %else
287 %assign i last_xmm
288 %rep (last_xmm - 5)
289 movxmm xmm %+ i, [rsp +((i - 6) * 16)]
290 %assign i i-1
291 %endrep
292 add rsp, xmm_stack_space
293 ; there are a couple functions which return from multiple places.
294 ; otherwise, we could uncomment these:
295 ; %undef last_xmm
296 ; %undef xmm_stack_space
297 ; %undef movxmm
298 %endif
270 %endmacro 299 %endmacro
271 %else 300 %else
272 %macro SAVE_XMM 0 301 %macro SAVE_XMM 1-2
273 %endmacro 302 %endmacro
274 %macro RESTORE_XMM 0 303 %macro RESTORE_XMM 0
275 %endmacro 304 %endmacro
276 %endif 305 %endif
277 306
278 ; Name of the rodata section 307 ; Name of the rodata section
279 ; 308 ;
280 ; .rodata seems to be an elf-ism, as it doesn't work on OSX. 309 ; .rodata seems to be an elf-ism, as it doesn't work on OSX.
281 ; 310 ;
282 %ifidn __OUTPUT_FORMAT__,macho64 311 %ifidn __OUTPUT_FORMAT__,macho64
283 %define SECTION_RODATA section .text 312 %define SECTION_RODATA section .text
284 %elifidn __OUTPUT_FORMAT__,macho32 313 %elifidn __OUTPUT_FORMAT__,macho32
285 %macro SECTION_RODATA 0 314 %macro SECTION_RODATA 0
286 section .text 315 section .text
287 %endmacro 316 %endmacro
288 %else 317 %else
289 %define SECTION_RODATA section .rodata 318 %define SECTION_RODATA section .rodata
290 %endif 319 %endif
291 320
292 321
293 ; Tell GNU ld that we don't require an executable stack. 322 ; Tell GNU ld that we don't require an executable stack.
294 %ifidn __OUTPUT_FORMAT__,elf32 323 %ifidn __OUTPUT_FORMAT__,elf32
295 section .note.GNU-stack noalloc noexec nowrite progbits 324 section .note.GNU-stack noalloc noexec nowrite progbits
296 section .text 325 section .text
297 %elifidn __OUTPUT_FORMAT__,elf64 326 %elifidn __OUTPUT_FORMAT__,elf64
298 section .note.GNU-stack noalloc noexec nowrite progbits 327 section .note.GNU-stack noalloc noexec nowrite progbits
299 section .text 328 section .text
300 %endif 329 %endif
301 330
OLDNEW
« no previous file with comments | « source/libvpx/vpx_ports/x86.h ('k') | source/libvpx/vpx_scale/arm/nds/yv12extend.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698