github.com/apache/arrow/go/v14@v14.0.1/parquet/internal/utils/_lib/unpack_bool_neon.s (about)

     1  	.text
     2  	.file	"unpack_bool.c"
     3  	.globl	bytes_to_bools_neon     // -- Begin function bytes_to_bools_neon
     4  	.p2align	2
     5  	.type	bytes_to_bools_neon,@function
     6  bytes_to_bools_neon:                    // @bytes_to_bools_neon
     7  // %bb.0:
     8  	stp	x29, x30, [sp, #-16]!   // 16-byte Folded Spill
     9  	cmp	w1, #1                  // =1
    10  	mov	x29, sp
    11  	b.lt	.LBB0_12
    12  // %bb.1:
    13  	mov	w9, w1
    14  	mov	x8, xzr
    15  	lsl	x9, x9, #3
    16  	mov	w10, #5
    17  	b	.LBB0_3
    18  .LBB0_2:                                //   in Loop: Header=BB0_3 Depth=1
    19  	add	x8, x8, #8              // =8
    20  	cmp	x9, x8
    21  	add	x0, x0, #1              // =1
    22  	b.eq	.LBB0_12
    23  .LBB0_3:                                // =>This Inner Loop Header: Depth=1
    24  	cmp	w8, w3
    25  	b.ge	.LBB0_2
    26  // %bb.4:                               //   in Loop: Header=BB0_3 Depth=1
    27  	ldrb	w12, [x0]
    28  	and	x11, x8, #0xffffffff
    29  	orr	x13, x11, #0x1
    30  	cmp	w13, w3
    31  	and	w12, w12, #0x1
    32  	strb	w12, [x2, x11]
    33  	b.ge	.LBB0_2
    34  // %bb.5:                               //   in Loop: Header=BB0_3 Depth=1
    35  	ldrb	w14, [x0]
    36  	orr	x12, x11, #0x2
    37  	cmp	w12, w3
    38  	ubfx	w14, w14, #1, #1
    39  	strb	w14, [x2, x13]
    40  	b.ge	.LBB0_2
    41  // %bb.6:                               //   in Loop: Header=BB0_3 Depth=1
    42  	ldrb	w14, [x0]
    43  	orr	x13, x11, #0x3
    44  	cmp	w13, w3
    45  	ubfx	w14, w14, #2, #1
    46  	strb	w14, [x2, x12]
    47  	b.ge	.LBB0_2
    48  // %bb.7:                               //   in Loop: Header=BB0_3 Depth=1
    49  	ldrb	w14, [x0]
    50  	orr	x12, x11, #0x4
    51  	cmp	w12, w3
    52  	ubfx	w14, w14, #3, #1
    53  	strb	w14, [x2, x13]
    54  	b.ge	.LBB0_2
    55  // %bb.8:                               //   in Loop: Header=BB0_3 Depth=1
    56  	ldrb	w14, [x0]
    57  	orr	x13, x11, x10
    58  	cmp	w13, w3
    59  	ubfx	w14, w14, #4, #1
    60  	strb	w14, [x2, x12]
    61  	b.ge	.LBB0_2
    62  // %bb.9:                               //   in Loop: Header=BB0_3 Depth=1
    63  	ldrb	w14, [x0]
    64  	orr	x12, x11, #0x6
    65  	cmp	w12, w3
    66  	ubfx	w14, w14, #5, #1
    67  	strb	w14, [x2, x13]
    68  	b.ge	.LBB0_2
    69  // %bb.10:                              //   in Loop: Header=BB0_3 Depth=1
    70  	ldrb	w13, [x0]
    71  	orr	x11, x11, #0x7
    72  	cmp	w11, w3
    73  	ubfx	w13, w13, #6, #1
    74  	strb	w13, [x2, x12]
    75  	b.ge	.LBB0_2
    76  // %bb.11:                              //   in Loop: Header=BB0_3 Depth=1
    77  	ldrb	w12, [x0]
    78  	lsr	w12, w12, #7
    79  	strb	w12, [x2, x11]
    80  	b	.LBB0_2
    81  .LBB0_12:
    82  	ldp	x29, x30, [sp], #16     // 16-byte Folded Reload
    83  	ret
    84  .Lfunc_end0:
    85  	.size	bytes_to_bools_neon, .Lfunc_end0-bytes_to_bools_neon
    86                                          // -- End function
    87  	.ident	"clang version 10.0.0-4ubuntu1 "
    88  	.section	".note.GNU-stack","",@progbits
    89  	.addrsig