OLD | NEW |
1 ; | 1 ; |
2 ; jsimdext.inc - common declarations | 2 ; jsimdext.inc - common declarations |
3 ; | 3 ; |
4 ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB | 4 ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB |
5 ; Copyright 2010 D. R. Commander | 5 ; Copyright 2010 D. R. Commander |
6 ; | 6 ; |
7 ; Based on | 7 ; Based on |
8 ; x86 SIMD extension for IJG JPEG library - version 1.02 | 8 ; x86 SIMD extension for IJG JPEG library - version 1.02 |
9 ; | 9 ; |
10 ; Copyright (C) 1999-2006, MIYASAKA Masaru. | 10 ; Copyright (C) 1999-2006, MIYASAKA Masaru. |
(...skipping 20 matching lines...) Expand all Loading... |
31 ; System-dependent configurations | 31 ; System-dependent configurations |
32 | 32 |
33 %ifdef WIN32 ; ----(nasm -fwin32 -DWIN32 ...)-------- | 33 %ifdef WIN32 ; ----(nasm -fwin32 -DWIN32 ...)-------- |
34 ; * Microsoft Visual C++ | 34 ; * Microsoft Visual C++ |
35 ; * MinGW (Minimalist GNU for Windows) | 35 ; * MinGW (Minimalist GNU for Windows) |
36 ; * CygWin | 36 ; * CygWin |
37 ; * LCC-Win32 | 37 ; * LCC-Win32 |
38 | 38 |
39 ; -- segment definition -- | 39 ; -- segment definition -- |
40 ; | 40 ; |
41 %define SEG_TEXT .text align=16 ; public use32 class=CODE | 41 %ifdef __YASM_VER__ |
42 %define SEG_CONST .rdata align=16 ; public use32 class=CONST | 42 %define SEG_TEXT .text align=16 |
| 43 %define SEG_CONST .rdata align=16 |
| 44 %else |
| 45 %define SEG_TEXT .text align=16 public use32 class=CODE |
| 46 %define SEG_CONST .rdata align=16 public use32 class=CONST |
| 47 %endif |
43 | 48 |
44 %elifdef WIN64 ; ----(nasm -fwin64 -DWIN64 ...)-------- | 49 %elifdef WIN64 ; ----(nasm -fwin64 -DWIN64 ...)-------- |
45 ; * Microsoft Visual C++ | 50 ; * Microsoft Visual C++ |
46 | 51 |
47 ; -- segment definition -- | 52 ; -- segment definition -- |
48 ; | 53 ; |
49 %define SEG_TEXT .text align=16 ; public use64 class=CODE | 54 %ifdef __YASM_VER__ |
50 %define SEG_CONST .rdata align=16 ; public use64 class=CONST | 55 %define SEG_TEXT .text align=16 |
51 %ifdef MSVC | 56 %define SEG_CONST .rdata align=16 |
| 57 %else |
| 58 %define SEG_TEXT .text align=16 public use64 class=CODE |
| 59 %define SEG_CONST .rdata align=16 public use64 class=CONST |
| 60 %endif |
52 %define EXTN(name) name ; foo() -> foo | 61 %define EXTN(name) name ; foo() -> foo |
53 %endif | |
54 | 62 |
55 %elifdef OBJ32 ; ----(nasm -fobj -DOBJ32 ...)---------- | 63 %elifdef OBJ32 ; ----(nasm -fobj -DOBJ32 ...)---------- |
56 ; * Borland C++ (Win32) | 64 ; * Borland C++ (Win32) |
57 | 65 |
58 ; -- segment definition -- | 66 ; -- segment definition -- |
59 ; | 67 ; |
60 %define SEG_TEXT .text align=16 public use32 class=CODE | 68 %define SEG_TEXT .text align=16 public use32 class=CODE |
61 %define SEG_CONST .data align=16 public use32 class=DATA | 69 %define SEG_CONST .data align=16 public use32 class=DATA |
62 | 70 |
63 %elifdef ELF ; ----(nasm -felf[64] -DELF ...)------------ | 71 %elifdef ELF ; ----(nasm -felf[64] -DELF ...)------------ |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 ; | 300 ; |
293 %imacro alignz 1.nolist | 301 %imacro alignz 1.nolist |
294 align %1, db 0 ; filling zeros | 302 align %1, db 0 ; filling zeros |
295 %endmacro | 303 %endmacro |
296 | 304 |
297 %ifdef __x86_64__ | 305 %ifdef __x86_64__ |
298 | 306 |
299 %ifdef WIN64 | 307 %ifdef WIN64 |
300 | 308 |
301 %imacro collect_args 0 | 309 %imacro collect_args 0 |
302 push r10 | |
303 push r11 | |
304 push r12 | 310 push r12 |
305 push r13 | 311 push r13 |
306 push r14 | 312 push r14 |
307 push r15 | 313 push r15 |
308 mov r10, rcx | 314 mov r10, rcx |
309 mov r11, rdx | 315 mov r11, rdx |
310 mov r12, r8 | 316 mov r12, r8 |
311 mov r13, r9 | 317 mov r13, r9 |
312 mov r14, [rax+48] | 318 mov r14, [rax+48] |
313 mov r15, [rax+56] | 319 mov r15, [rax+56] |
314 push rsi | 320 push rsi |
315 push rdi | 321 push rdi |
316 sub rsp, SIZEOF_XMMWORD | 322 sub rsp, SIZEOF_XMMWORD |
317 movlpd XMMWORD [rsp], xmm6 | 323 movlpd XMMWORD [rsp], xmm6 |
318 sub rsp, SIZEOF_XMMWORD | 324 sub rsp, SIZEOF_XMMWORD |
319 movlpd XMMWORD [rsp], xmm7 | 325 movlpd XMMWORD [rsp], xmm7 |
320 %endmacro | 326 %endmacro |
321 | 327 |
322 %imacro uncollect_args 0 | 328 %imacro uncollect_args 0 |
323 movlpd xmm7, XMMWORD [rsp] | 329 movlpd xmm7, XMMWORD [rsp] |
324 add rsp, SIZEOF_XMMWORD | 330 add rsp, SIZEOF_XMMWORD |
325 movlpd xmm6, XMMWORD [rsp] | 331 movlpd xmm6, XMMWORD [rsp] |
326 add rsp, SIZEOF_XMMWORD | 332 add rsp, SIZEOF_XMMWORD |
327 pop rdi | 333 pop rdi |
328 pop rsi | 334 pop rsi |
329 pop r15 | 335 pop r15 |
330 pop r14 | 336 pop r14 |
331 pop r13 | 337 pop r13 |
332 pop r12 | 338 pop r12 |
333 pop r11 | |
334 pop r10 | |
335 %endmacro | 339 %endmacro |
336 | 340 |
337 %else | 341 %else |
338 | 342 |
339 %imacro collect_args 0 | 343 %imacro collect_args 0 |
340 push r10 | 344 push r10 |
341 push r11 | 345 push r11 |
342 push r12 | 346 push r12 |
343 push r13 | 347 push r13 |
344 push r14 | 348 push r14 |
(...skipping 28 matching lines...) Expand all Loading... |
373 %ifdef MACHO ; ----(nasm -fmacho -DMACHO ...)-------- | 377 %ifdef MACHO ; ----(nasm -fmacho -DMACHO ...)-------- |
374 %define PRIVATE :private_extern | 378 %define PRIVATE :private_extern |
375 %elifdef ELF ; ----(nasm -felf[64] -DELF ...)------------ | 379 %elifdef ELF ; ----(nasm -felf[64] -DELF ...)------------ |
376 %define PRIVATE :hidden | 380 %define PRIVATE :hidden |
377 %else | 381 %else |
378 %define PRIVATE | 382 %define PRIVATE |
379 %endif | 383 %endif |
380 ; End chromium edits | 384 ; End chromium edits |
381 | 385 |
382 ; -------------------------------------------------------------------------- | 386 ; -------------------------------------------------------------------------- |
OLD | NEW |