...

Text file src/github.com/apache/arrow/go/v15/parquet/internal/bmi/bitmap_bmi2_amd64.s

Documentation: github.com/apache/arrow/go/v15/parquet/internal/bmi

     1//+build !noasm !appengine
     2// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
     3
     4TEXT ·_extract_bits_bmi2(SB), $0-24
     5
     6	MOVQ bitmap+0(FP), DI
     7	MOVQ selectBitmap+8(FP), SI
     8
     9	LONG $0xf5c2e2c4; BYTE $0xc6 // pext    rax, rdi, rsi
    10	MOVQ AX, res+16(FP)
    11	RET
    12
    13DATA LCDATA1<>+0x000(SB)/8, $0x0000000000000000
    14DATA LCDATA1<>+0x008(SB)/8, $0x0000000000000001
    15DATA LCDATA1<>+0x010(SB)/8, $0x0000000000000002
    16DATA LCDATA1<>+0x018(SB)/8, $0x0000000000000003
    17DATA LCDATA1<>+0x020(SB)/8, $0x0000000000000004
    18DATA LCDATA1<>+0x028(SB)/8, $0x0000000000000008
    19DATA LCDATA1<>+0x030(SB)/8, $0x000000000000000c
    20DATA LCDATA1<>+0x038(SB)/8, $0x0000000000000001
    21DATA LCDATA1<>+0x040(SB)/8, $0x0000000000000010
    22GLOBL LCDATA1<>(SB), 8, $72
    23
    24TEXT ·_levels_to_bitmap_bmi2(SB), $0-32
    25
    26	MOVQ levels+0(FP), DI
    27	MOVQ numLevels+8(FP), SI
    28	MOVW rhs+16(FP), DX
    29	LEAQ LCDATA1<>(SB), BP
    30
    31	WORD $0xf685             // test    esi, esi
    32	JLE  LBB1_1
    33	WORD $0x8941; BYTE $0xf0 // mov    r8d, esi
    34	WORD $0xfe83; BYTE $0x0f // cmp    esi, 15
    35	JA   LBB1_4
    36	WORD $0xf631             // xor    esi, esi
    37	WORD $0xc031             // xor    eax, eax
    38	JMP  LBB1_7
    39
    40LBB1_1:
    41	WORD $0xc031 // xor    eax, eax
    42	JMP  LBB1_8
    43
    44LBB1_4:
    45	WORD $0x8944; BYTE $0xc6       // mov    esi, r8d
    46	WORD $0xe683; BYTE $0xf0       // and    esi, -16
    47	LONG $0xc26ef9c5               // vmovd    xmm0, edx
    48	LONG $0x7979e2c4; BYTE $0xc8   // vpbroadcastw    xmm1, xmm0
    49	LONG $0xc0eff9c5               // vpxor    xmm0, xmm0, xmm0
    50	LONG $0x556ffdc5; BYTE $0x00   // vmovdqa    ymm2, yword 0[rbp] /* [rip + .LCPI1_0] */
    51	LONG $0x597d62c4; WORD $0x2065 // vpbroadcastq    ymm12, qword 32[rbp] /* [rip + .LCPI1_1] */
    52	LONG $0x597de2c4; WORD $0x2865 // vpbroadcastq    ymm4, qword 40[rbp] /* [rip + .LCPI1_2] */
    53	LONG $0x597de2c4; WORD $0x306d // vpbroadcastq    ymm5, qword 48[rbp] /* [rip + .LCPI1_3] */
    54	LONG $0x597de2c4; WORD $0x3875 // vpbroadcastq    ymm6, qword 56[rbp] /* [rip + .LCPI1_4] */
    55	LONG $0x597de2c4; WORD $0x407d // vpbroadcastq    ymm7, qword 64[rbp] /* [rip + .LCPI1_5] */
    56	WORD $0xc031                   // xor    eax, eax
    57	LONG $0xef3941c4; BYTE $0xc0   // vpxor    xmm8, xmm8, xmm8
    58	LONG $0xef3141c4; BYTE $0xc9   // vpxor    xmm9, xmm9, xmm9
    59	LONG $0xef2941c4; BYTE $0xd2   // vpxor    xmm10, xmm10, xmm10
    60
    61LBB1_5:
    62	LONG $0xdad41dc5               // vpaddq    ymm11, ymm12, ymm2
    63	LONG $0x5c7efac5; WORD $0x0847 // vmovq    xmm3, qword [rdi + 2*rax + 8]
    64	LONG $0xd965e1c5               // vpcmpgtw    xmm3, xmm3, xmm1
    65	LONG $0x347de2c4; BYTE $0xdb   // vpmovzxwq    ymm3, xmm3
    66	LONG $0xdedbe5c5               // vpand    ymm3, ymm3, ymm6
    67	LONG $0x47e5c2c4; BYTE $0xdb   // vpsllvq    ymm3, ymm3, ymm11
    68	LONG $0xdcd46dc5               // vpaddq    ymm11, ymm2, ymm4
    69	LONG $0xc3eb3dc5               // vpor    ymm8, ymm8, ymm3
    70	LONG $0x5c7efac5; WORD $0x1047 // vmovq    xmm3, qword [rdi + 2*rax + 16]
    71	LONG $0xd965e1c5               // vpcmpgtw    xmm3, xmm3, xmm1
    72	LONG $0x347de2c4; BYTE $0xdb   // vpmovzxwq    ymm3, xmm3
    73	LONG $0xdedbe5c5               // vpand    ymm3, ymm3, ymm6
    74	LONG $0x47e5c2c4; BYTE $0xdb   // vpsllvq    ymm3, ymm3, ymm11
    75	LONG $0xddd46dc5               // vpaddq    ymm11, ymm2, ymm5
    76	LONG $0xcbeb35c5               // vpor    ymm9, ymm9, ymm3
    77	LONG $0x5c7efac5; WORD $0x1847 // vmovq    xmm3, qword [rdi + 2*rax + 24]
    78	LONG $0xd965e1c5               // vpcmpgtw    xmm3, xmm3, xmm1
    79	LONG $0x347de2c4; BYTE $0xdb   // vpmovzxwq    ymm3, xmm3
    80	LONG $0xdedbe5c5               // vpand    ymm3, ymm3, ymm6
    81	LONG $0x47e5c2c4; BYTE $0xdb   // vpsllvq    ymm3, ymm3, ymm11
    82	LONG $0xd3eb2dc5               // vpor    ymm10, ymm10, ymm3
    83	LONG $0x1c7efac5; BYTE $0x47   // vmovq    xmm3, qword [rdi + 2*rax]
    84	LONG $0xd965e1c5               // vpcmpgtw    xmm3, xmm3, xmm1
    85	LONG $0x347de2c4; BYTE $0xdb   // vpmovzxwq    ymm3, xmm3
    86	LONG $0xdedbe5c5               // vpand    ymm3, ymm3, ymm6
    87	LONG $0x47e5e2c4; BYTE $0xda   // vpsllvq    ymm3, ymm3, ymm2
    88	LONG $0xc0ebe5c5               // vpor    ymm0, ymm3, ymm0
    89	LONG $0x10c08348               // add    rax, 16
    90	LONG $0xd7d4edc5               // vpaddq    ymm2, ymm2, ymm7
    91	WORD $0x3948; BYTE $0xc6       // cmp    rsi, rax
    92	JNE  LBB1_5
    93	LONG $0xc0ebbdc5               // vpor    ymm0, ymm8, ymm0
    94	LONG $0xc0ebb5c5               // vpor    ymm0, ymm9, ymm0
    95	LONG $0xc0ebadc5               // vpor    ymm0, ymm10, ymm0
    96	LONG $0x397de3c4; WORD $0x01c1 // vextracti128    xmm1, ymm0, 1
    97	LONG $0xc1ebf9c5               // vpor    xmm0, xmm0, xmm1
    98	LONG $0xc870f9c5; BYTE $0x4e   // vpshufd    xmm1, xmm0, 78
    99	LONG $0xc1ebf9c5               // vpor    xmm0, xmm0, xmm1
   100	LONG $0x7ef9e1c4; BYTE $0xc0   // vmovq    rax, xmm0
   101	WORD $0x394c; BYTE $0xc6       // cmp    rsi, r8
   102	JE   LBB1_8
   103
   104LBB1_7:
   105	WORD $0xc931                 // xor    ecx, ecx
   106	LONG $0x77143966             // cmp    word [rdi + 2*rsi], dx
   107	WORD $0x9f0f; BYTE $0xd1     // setg    cl
   108	LONG $0xf7c9e2c4; BYTE $0xc9 // shlx    rcx, rcx, rsi
   109	WORD $0x0948; BYTE $0xc8     // or    rax, rcx
   110	LONG $0x01c68348             // add    rsi, 1
   111	WORD $0x3949; BYTE $0xf0     // cmp    r8, rsi
   112	JNE  LBB1_7
   113
   114LBB1_8:
   115	VZEROUPPER
   116	MOVQ AX, res+24(FP)
   117	RET

View as plain text