change assembly comment style to hopefully fix windows

This commit is contained in:
Brendan Hansknecht 2023-06-02 15:54:08 -07:00
parent 341ef9bb7b
commit b899b54354
No known key found for this signature in database
GPG key ID: A199D0660F95F948
4 changed files with 26 additions and 26 deletions

View file

@ -9,24 +9,24 @@ comptime {
switch (arch) { switch (arch) {
.x86_64 => { .x86_64 => {
asm (std.fmt.comptimePrint( asm (std.fmt.comptimePrint(
\\ # Check if AVX2 is supported. \\ // Check if AVX2 is supported.
\\ # Returns 1 if AVX2 is supported, 0 otherwise. \\ // Returns 1 if AVX2 is supported, 0 otherwise.
\\ .global {[function_prefix]s}supports_avx2; \\ .global {[function_prefix]s}supports_avx2;
\\ {[function_prefix]s}supports_avx2: \\ {[function_prefix]s}supports_avx2:
\\ # Save the EBX register. \\ // Save the EBX register.
\\ push %rbx \\ push %rbx
\\ \\
\\ # Call the CPUID instruction with the EAX register set to 7 and ECX set to 0. \\ // Call the CPUID instruction with the EAX register set to 7 and ECX set to 0.
\\ # This will get the CPUID information for the current CPU. \\ // This will get the CPUID information for the current CPU.
\\ mov $7, %eax \\ mov $7, %eax
\\ mov $0, %ecx \\ mov $0, %ecx
\\ cpuid \\ cpuid
\\ \\
\\ # The AVX2 feature flag is located in the EBX register at bit 5. \\ // The AVX2 feature flag is located in the EBX register at bit 5.
\\ bt $5, %ebx \\ bt $5, %ebx
\\ jc .avx2_supported \\ jc .avx2_supported
\\ \\
\\ # AVX2 is not supported. \\ // AVX2 is not supported.
\\ pop %rbx \\ pop %rbx
\\ mov $0, %eax \\ mov $0, %eax
\\ ret \\ ret
@ -37,24 +37,24 @@ comptime {
\\ ret \\ ret
, .{ .function_prefix = function_prefix })); , .{ .function_prefix = function_prefix }));
asm (std.fmt.comptimePrint( asm (std.fmt.comptimePrint(
\\ # Check if prefetchw is supported. \\ // Check if prefetchw is supported.
\\ # Returns 1 if the prefetchw instruction is supported, 0 otherwise. \\ // Returns 1 if the prefetchw instruction is supported, 0 otherwise.
\\ .global {[function_prefix]s}supports_prefetchw; \\ .global {[function_prefix]s}supports_prefetchw;
\\ {[function_prefix]s}supports_prefetchw: \\ {[function_prefix]s}supports_prefetchw:
\\ # Save the EBX register. \\ // Save the EBX register.
\\ push %rbx \\ push %rbx
\\ \\
\\ # Call the CPUID instruction with the EAX register set to 0x80000001 and ECX set to 0. \\ // Call the CPUID instruction with the EAX register set to 0x80000001 and ECX set to 0.
\\ # This will get the CPUID information for the current CPU. \\ // This will get the CPUID information for the current CPU.
\\ mov $0x80000001, %eax \\ mov $0x80000001, %eax
\\ mov $0, %ecx \\ mov $0, %ecx
\\ cpuid \\ cpuid
\\ \\
\\ # The prefetchw feature flag is located in the ECX register at bit 8. \\ // The prefetchw feature flag is located in the ECX register at bit 8.
\\ bt $8, %ecx \\ bt $8, %ecx
\\ jc .prefetchw_supported \\ jc .prefetchw_supported
\\ \\
\\ # AVX2 is not supported. \\ // AVX2 is not supported.
\\ pop %rbx \\ pop %rbx
\\ mov $0, %eax \\ mov $0, %eax
\\ ret \\ ret

View file

@ -71,7 +71,7 @@
*/ */
# .type {[function_prefix]s}__folly_memcpy_short_{[prefetch]s}, @function not supported by windows // .type {[function_prefix]s}__folly_memcpy_short_{[prefetch]s}, @function not supported by windows
{[function_prefix]s}__folly_memcpy_short_{[prefetch]s}: {[function_prefix]s}__folly_memcpy_short_{[prefetch]s}:
.cfi_startproc .cfi_startproc
@ -106,7 +106,7 @@
ret ret
.cfi_endproc .cfi_endproc
# .size {[function_prefix]s}__folly_memcpy_short_{[prefetch]s}, .-{[function_prefix]s}__folly_memcpy_short_{[prefetch]s} not supported by windows // .size {[function_prefix]s}__folly_memcpy_short_{[prefetch]s}, .-{[function_prefix]s}__folly_memcpy_short_{[prefetch]s} not supported by windows
// memcpy is an alternative entrypoint into the function named __folly_memcpy. // memcpy is an alternative entrypoint into the function named __folly_memcpy.
// The compiler is able to call memcpy since the name is global while // The compiler is able to call memcpy since the name is global while
@ -115,12 +115,12 @@
// memcpy is being used. // memcpy is being used.
.balign 64 .balign 64
.globl {[function_prefix]s}__folly_memcpy_{[prefetch]s} .globl {[function_prefix]s}__folly_memcpy_{[prefetch]s}
# .type {[function_prefix]s}__folly_memcpy_{[prefetch]s}, @function not supported by windows // .type {[function_prefix]s}__folly_memcpy_{[prefetch]s}, @function not supported by windows
{[function_prefix]s}__folly_memcpy_{[prefetch]s}: {[function_prefix]s}__folly_memcpy_{[prefetch]s}:
.cfi_startproc .cfi_startproc
mov %rdi, %rax # return: $rdi mov %rdi, %rax // return: $rdi
test %rdx, %rdx test %rdx, %rdx
je .L_EQ0_{[prefetch]s} je .L_EQ0_{[prefetch]s}
@ -261,8 +261,8 @@
// This threshold is half of L1 cache on a Skylake machine, which means that // This threshold is half of L1 cache on a Skylake machine, which means that
// potentially all of L1 will be populated by this copy once it is executed // potentially all of L1 will be populated by this copy once it is executed
// (dst and src are cached for temporal copies). // (dst and src are cached for temporal copies).
# NON_TEMPORAL_STORE_THRESHOLD = $32768 // NON_TEMPORAL_STORE_THRESHOLD = $32768
# cmp NON_TEMPORAL_STORE_THRESHOLD, %rdx // cmp NON_TEMPORAL_STORE_THRESHOLD, %rdx
cmp $32768, %rdx cmp $32768, %rdx
jae .L_NON_TEMPORAL_LOOP_{[prefetch]s} jae .L_NON_TEMPORAL_LOOP_{[prefetch]s}
@ -387,7 +387,7 @@
ret ret
.L_OVERLAP_BWD_{[prefetch]s}: .L_OVERLAP_BWD_{[prefetch]s}:
# Save last 32 bytes. // Save last 32 bytes.
vmovdqu -32(%rsi, %rdx), %ymm8 vmovdqu -32(%rsi, %rdx), %ymm8
lea -32(%rdi, %rdx), %r9 lea -32(%rdi, %rdx), %r9
@ -434,4 +434,4 @@
ret ret
.cfi_endproc .cfi_endproc
# .size {[function_prefix]s}__folly_memcpy_{[prefetch]s}, .-{[function_prefix]s}__folly_memcpy_{[prefetch]s} not supported by windows // .size {[function_prefix]s}__folly_memcpy_{[prefetch]s}, .-{[function_prefix]s}__folly_memcpy_{[prefetch]s} not supported by windows

View file

@ -1,6 +1,6 @@
.global {[function_prefix]s}musl_memcpy .global {[function_prefix]s}musl_memcpy
# Windows does not support the type directive. // Windows does not support the type directive.
# .type {[function_prefix]s}musl_memcpy,@function // .type {[function_prefix]s}musl_memcpy,@function
{[function_prefix]s}musl_memcpy: {[function_prefix]s}musl_memcpy:
push %esi push %esi
push %edi push %edi

View file

@ -1,6 +1,6 @@
.global {[function_prefix]s}musl_memcpy .global {[function_prefix]s}musl_memcpy
# Windows does not support the type directive. // Windows does not support the type directive.
# .type {[function_prefix]s}musl_memcpy,@function // .type {[function_prefix]s}musl_memcpy,@function
{[function_prefix]s}musl_memcpy: {[function_prefix]s}musl_memcpy:
mov %rdi,%rax mov %rdi,%rax
cmp $8,%rdx cmp $8,%rdx