github.com/apache/arrow/go/v7@v7.0.1/parquet/internal/utils/unpack_bool_sse4_amd64.s (about)

     1  //+build !noasm !appengine
     2  // AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
     3  
     4  TEXT ยท_bytes_to_bools_sse4(SB), $0-32
     5  
     6  	MOVQ in+0(FP), DI
     7  	MOVQ len+8(FP), SI
     8  	MOVQ out+16(FP), DX
     9  	MOVQ outlen+24(FP), CX
    10  
    11  	WORD $0xf685             // test    esi, esi
    12  	JLE  LBB0_5
    13  	WORD $0x8941; BYTE $0xf0 // mov    r8d, esi
    14  	LONG $0x03e0c149         // shl    r8, 3
    15  	WORD $0x3145; BYTE $0xd2 // xor    r10d, r10d
    16  	JMP  LBB0_2
    17  
    18  LBB0_4:
    19  	LONG $0x08c28349         // add    r10, 8
    20  	LONG $0x01c78348         // add    rdi, 1
    21  	WORD $0x394d; BYTE $0xd0 // cmp    r8, r10
    22  	JE   LBB0_5
    23  
    24  LBB0_2:
    25  	WORD $0x3941; BYTE $0xca // cmp    r10d, ecx
    26  	JGE  LBB0_4
    27  	WORD $0x8945; BYTE $0xd1 // mov    r9d, r10d
    28  	WORD $0xb60f; BYTE $0x07 // movzx    eax, byte [rdi]
    29  	WORD $0x0124             // and    al, 1
    30  	LONG $0x0a048842         // mov    byte [rdx + r9], al
    31  	WORD $0x894c; BYTE $0xce // mov    rsi, r9
    32  	LONG $0x01ce8348         // or    rsi, 1
    33  	WORD $0xce39             // cmp    esi, ecx
    34  	JGE  LBB0_4
    35  	WORD $0xb60f; BYTE $0x07 // movzx    eax, byte [rdi]
    36  	WORD $0xe8d0             // shr    al, 1
    37  	WORD $0x0124             // and    al, 1
    38  	WORD $0x0488; BYTE $0x32 // mov    byte [rdx + rsi], al
    39  	WORD $0x894c; BYTE $0xce // mov    rsi, r9
    40  	LONG $0x02ce8348         // or    rsi, 2
    41  	WORD $0xce39             // cmp    esi, ecx
    42  	JGE  LBB0_4
    43  	WORD $0xb60f; BYTE $0x07 // movzx    eax, byte [rdi]
    44  	WORD $0xe8c0; BYTE $0x02 // shr    al, 2
    45  	WORD $0x0124             // and    al, 1
    46  	WORD $0x0488; BYTE $0x32 // mov    byte [rdx + rsi], al
    47  	WORD $0x894c; BYTE $0xce // mov    rsi, r9
    48  	LONG $0x03ce8348         // or    rsi, 3
    49  	WORD $0xce39             // cmp    esi, ecx
    50  	JGE  LBB0_4
    51  	WORD $0xb60f; BYTE $0x07 // movzx    eax, byte [rdi]
    52  	WORD $0xe8c0; BYTE $0x03 // shr    al, 3
    53  	WORD $0x0124             // and    al, 1
    54  	WORD $0x0488; BYTE $0x32 // mov    byte [rdx + rsi], al
    55  	WORD $0x894c; BYTE $0xce // mov    rsi, r9
    56  	LONG $0x04ce8348         // or    rsi, 4
    57  	WORD $0xce39             // cmp    esi, ecx
    58  	JGE  LBB0_4
    59  	WORD $0xb60f; BYTE $0x07 // movzx    eax, byte [rdi]
    60  	WORD $0xe8c0; BYTE $0x04 // shr    al, 4
    61  	WORD $0x0124             // and    al, 1
    62  	WORD $0x0488; BYTE $0x32 // mov    byte [rdx + rsi], al
    63  	WORD $0x894c; BYTE $0xce // mov    rsi, r9
    64  	LONG $0x05ce8348         // or    rsi, 5
    65  	WORD $0xce39             // cmp    esi, ecx
    66  	JGE  LBB0_4
    67  	WORD $0xb60f; BYTE $0x07 // movzx    eax, byte [rdi]
    68  	WORD $0xe8c0; BYTE $0x05 // shr    al, 5
    69  	WORD $0x0124             // and    al, 1
    70  	WORD $0x0488; BYTE $0x32 // mov    byte [rdx + rsi], al
    71  	WORD $0x894c; BYTE $0xce // mov    rsi, r9
    72  	LONG $0x06ce8348         // or    rsi, 6
    73  	WORD $0xce39             // cmp    esi, ecx
    74  	JGE  LBB0_4
    75  	WORD $0xb60f; BYTE $0x07 // movzx    eax, byte [rdi]
    76  	WORD $0xe8c0; BYTE $0x06 // shr    al, 6
    77  	WORD $0x0124             // and    al, 1
    78  	WORD $0x0488; BYTE $0x32 // mov    byte [rdx + rsi], al
    79  	LONG $0x07c98349         // or    r9, 7
    80  	WORD $0x3941; BYTE $0xc9 // cmp    r9d, ecx
    81  	JGE  LBB0_4
    82  	WORD $0xb60f; BYTE $0x07 // movzx    eax, byte [rdi]
    83  	WORD $0xe8c0; BYTE $0x07 // shr    al, 7
    84  	LONG $0x0a048842         // mov    byte [rdx + r9], al
    85  	JMP  LBB0_4
    86  
    87  LBB0_5:
    88  	RET