github.com/minio/simdjson-go@v0.4.6-0.20231116094823-04d21cddf993/finalize_structurals_amd64.s (about)

     1  //+build !noasm !appengine gc
     2  // AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
     3  
     4  #include "common.h"
     5  
     6  TEXT ·_finalize_structurals(SB), $0-48
     7  
     8  	MOVQ structurals_in+0(FP), DI
     9  	MOVQ whitespace+8(FP), SI
    10  	MOVQ quote_mask+16(FP), DX
    11  	MOVQ quote_bits+24(FP), CX
    12  	MOVQ prev_iter_ends_pseudo_pred+32(FP), R8
    13  
    14  	CALL ·__finalize_structurals(SB)
    15  
    16  	MOVQ AX, structurals+40(FP)
    17  	RET
    18  
    19  TEXT ·__finalize_structurals(SB), $0
    20  
    21  	ANDNQ DI, DX, DI     // andn    rdi, rdx, rdi
    22  	ORQ   CX, DI         // or    rdi, rcx
    23  	MOVQ  DI, AX         // mov    rax, rdi
    24  	ORQ   SI, AX         // or    rax, rsi
    25  	LEAQ  (AX)(AX*1), R9 // lea    r9, [rax + rax]
    26  	ORQ   (R8), R9       // or    r9, qword [r8]
    27  	SHRQ  $63, AX        // shr    rax, 63
    28  	MOVQ  AX, (R8)       // mov    qword [r8], rax
    29  	NOTQ  SI             // not    rsi
    30  	ANDNQ SI, DX, AX     // andn    rax, rdx, rsi
    31  	ANDQ  R9, AX         // and    rax, r9
    32  	ORQ   DI, AX         // or    rax, rdi
    33  	NOTQ  CX             // not    rcx
    34  	ORQ   DX, CX         // or    rcx, rdx
    35  	ANDQ  CX, AX         // and    rax, rcx
    36  	RET
    37  
    38  TEXT ·__finalize_structurals_avx512(SB), $0
    39  
    40  	KMOVQ K_WHITESPACE, SI
    41  	KMOVQ K_QUOTEBITS, CX
    42  	KMOVQ K_STRUCTURALS, DI
    43  	ANDNQ DI, DX, DI        // andn    rdi, rdx, rdi
    44  	ORQ   CX, DI            // or    rdi, rcx
    45  	MOVQ  DI, AX            // mov    rax, rdi
    46  	ORQ   SI, AX            // or    rax, rsi
    47  	LEAQ  (AX)(AX*1), R9    // lea    r9, [rax + rax]
    48  	ORQ   (R8), R9          // or    r9, qword [r8]
    49  	SHRQ  $63, AX           // shr    rax, 63
    50  	MOVQ  AX, (R8)          // mov    qword [r8], rax
    51  	NOTQ  SI                // not    rsi
    52  	ANDNQ SI, DX, AX        // andn    rax, rdx, rsi
    53  	ANDQ  R9, AX            // and    rax, r9
    54  	ORQ   DI, AX            // or    rax, rdi
    55  	NOTQ  CX                // not    rcx
    56  	ORQ   DX, CX            // or    rcx, rdx
    57  	ANDQ  CX, AX            // and    rax, rcx
    58  	RET