Merge pull request #4246 from pps83/dev-asmx64-win
[asm] Enable x86_64 asm for windows builds
This commit is contained in:
@@ -93,7 +93,7 @@
|
|||||||
* Only enable assembly for GNU C compatible compilers,
|
* Only enable assembly for GNU C compatible compilers,
|
||||||
* because other platforms may not support GAS assembly syntax.
|
* because other platforms may not support GAS assembly syntax.
|
||||||
*
|
*
|
||||||
* Only enable assembly for Linux / MacOS, other platforms may
|
* Only enable assembly for Linux / MacOS / Win32, other platforms may
|
||||||
* work, but they haven't been tested. This could likely be
|
* work, but they haven't been tested. This could likely be
|
||||||
* extended to BSD systems.
|
* extended to BSD systems.
|
||||||
*
|
*
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
* 100% of code to be instrumented to work.
|
* 100% of code to be instrumented to work.
|
||||||
*/
|
*/
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
# if defined(__linux__) || defined(__linux) || defined(__APPLE__)
|
# if defined(__linux__) || defined(__linux) || defined(__APPLE__) || defined(_WIN32)
|
||||||
# if ZSTD_MEMORY_SANITIZER
|
# if ZSTD_MEMORY_SANITIZER
|
||||||
# define ZSTD_ASM_SUPPORTED 0
|
# define ZSTD_ASM_SUPPORTED 0
|
||||||
# elif ZSTD_DATAFLOW_SANITIZER
|
# elif ZSTD_DATAFLOW_SANITIZER
|
||||||
|
|||||||
@@ -42,13 +42,11 @@
|
|||||||
|
|
||||||
/* Calling convention:
|
/* Calling convention:
|
||||||
*
|
*
|
||||||
* %rdi contains the first argument: HUF_DecompressAsmArgs*.
|
* %rdi (or %rcx on Windows) contains the first argument: HUF_DecompressAsmArgs*.
|
||||||
* %rbp isn't maintained (no frame pointer).
|
* %rbp isn't maintained (no frame pointer).
|
||||||
* %rsp contains the stack pointer that grows down.
|
* %rsp contains the stack pointer that grows down.
|
||||||
* No red-zone is assumed, only addresses >= %rsp are used.
|
* No red-zone is assumed, only addresses >= %rsp are used.
|
||||||
* All register contents are preserved.
|
* All register contents are preserved.
|
||||||
*
|
|
||||||
* TODO: Support Windows calling convention.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ZSTD_HIDE_ASM_FUNCTION(HUF_decompress4X1_usingDTable_internal_fast_asm_loop)
|
ZSTD_HIDE_ASM_FUNCTION(HUF_decompress4X1_usingDTable_internal_fast_asm_loop)
|
||||||
@@ -137,7 +135,11 @@ HUF_decompress4X1_usingDTable_internal_fast_asm_loop:
|
|||||||
push %r15
|
push %r15
|
||||||
|
|
||||||
/* Read HUF_DecompressAsmArgs* args from %rax */
|
/* Read HUF_DecompressAsmArgs* args from %rax */
|
||||||
|
#if defined(_WIN32)
|
||||||
|
movq %rcx, %rax
|
||||||
|
#else
|
||||||
movq %rdi, %rax
|
movq %rdi, %rax
|
||||||
|
#endif
|
||||||
movq 0(%rax), %ip0
|
movq 0(%rax), %ip0
|
||||||
movq 8(%rax), %ip1
|
movq 8(%rax), %ip1
|
||||||
movq 16(%rax), %ip2
|
movq 16(%rax), %ip2
|
||||||
@@ -391,7 +393,12 @@ HUF_decompress4X2_usingDTable_internal_fast_asm_loop:
|
|||||||
push %r14
|
push %r14
|
||||||
push %r15
|
push %r15
|
||||||
|
|
||||||
|
/* Read HUF_DecompressAsmArgs* args from %rax */
|
||||||
|
#if defined(_WIN32)
|
||||||
|
movq %rcx, %rax
|
||||||
|
#else
|
||||||
movq %rdi, %rax
|
movq %rdi, %rax
|
||||||
|
#endif
|
||||||
movq 0(%rax), %ip0
|
movq 0(%rax), %ip0
|
||||||
movq 8(%rax), %ip1
|
movq 8(%rax), %ip1
|
||||||
movq 16(%rax), %ip2
|
movq 16(%rax), %ip2
|
||||||
|
|||||||
Reference in New Issue
Block a user