Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions arrow/compute/internal/kernels/cast_numeric_neon_arm64.s
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,7 @@ TEXT ·_cast_type_numeric_neon(SB), $0-40
MOVD len+32(FP), R4


// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x7100181f // cmp w0, #6
WORD $0x910003fd // mov x29, sp
BGT LBB0_17

WORD $0x71000c1f // cmp w0, #3
Expand Down Expand Up @@ -4450,9 +4444,6 @@ LBB0_892:
WORD $0xb800452b // str w11, [x9], #4
BNE LBB0_892
LBB0_893:
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
LBB0_894:
WORD $0x927b6909 // and x9, x8, #0xffffffe0
Expand Down
14 changes: 1 addition & 13 deletions arrow/math/int64_neon_arm64.s
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,7 @@ TEXT ·_sum_int64_neon(SB), $0-24
MOVD buf+0(FP), R0
MOVD len+8(FP), R1
MOVD res+16(FP), R2

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x910003fd // mov x29, sp

CBZ R1, LBB0_3
WORD $0xf1000c3f // cmp x1, #3
BHI LBB0_4
Expand All @@ -26,9 +20,6 @@ TEXT ·_sum_int64_neon(SB), $0-24
LBB0_3:
WORD $0xaa1f03e9 // mov x9, xzr
WORD $0xf9000049 // str x9, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
LBB0_4:
WORD $0x927ef428 // and x8, x1, #0xfffffffffffffffc
Expand Down Expand Up @@ -59,8 +50,5 @@ LBB0_8:
BNE LBB0_8
LBB0_9:
WORD $0xf9000049 // str x9, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET

14 changes: 1 addition & 13 deletions arrow/math/uint64_neon_arm64.s
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,7 @@ TEXT ·_sum_uint64_neon(SB), $0-24
MOVD buf+0(FP), R0
MOVD len+8(FP), R1
MOVD res+16(FP), R2

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x910003fd // mov x29, sp

CBZ R1, LBB0_3
WORD $0xf1000c3f // cmp x1, #3
BHI LBB0_4
Expand All @@ -26,9 +20,6 @@ TEXT ·_sum_uint64_neon(SB), $0-24
LBB0_3:
WORD $0xaa1f03e9 // mov x9, xzr
WORD $0xf9000049 // str x9, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
LBB0_4:
WORD $0x927ef428 // and x8, x1, #0xfffffffffffffffc
Expand Down Expand Up @@ -59,8 +50,5 @@ LBB0_8:
BNE LBB0_8
LBB0_9:
WORD $0xf9000049 // str x9, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET

9 changes: 0 additions & 9 deletions arrow/memory/memory_neon_arm64.s
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,8 @@ TEXT ·_memset_neon(SB), $0-24
MOVD len+8(FP), R1
MOVD c+16(FP), R2

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x8b010008 // add x8, x0, x1
WORD $0xeb00011f // cmp x8, x0
WORD $0x910003fd // mov x29, sp
BLS LBB0_7

WORD $0xf100803f // cmp x1, #32
Expand All @@ -43,7 +37,4 @@ LBB0_6:
WORD $0xeb09011f // cmp x8, x9
BNE LBB0_6
LBB0_7:
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
48 changes: 0 additions & 48 deletions internal/utils/min_max_neon_arm64.s
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,7 @@ TEXT ·_int32_max_min_neon(SB), $0-32
MOVD minout+16(FP), R2
MOVD maxout+24(FP), R3

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x7100043f // cmp w1, #1
WORD $0x910003fd // mov x29, sp
BLT int32_early_exit

WORD $0x71001c3f // cmp w1, #7
Expand All @@ -34,9 +28,6 @@ int32_early_exit:
WORD $0x52b0000b // mov w11, #-2147483648
WORD $0xb900006b // str w11, [x3]
WORD $0xb900004a // str w10, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
int32_neon:
WORD $0x927d7109 // and x9, x8, #0xfffffff8
Expand Down Expand Up @@ -78,9 +69,6 @@ int32_scalar_loop:
int32_done:
WORD $0xb900006b // str w11, [x3]
WORD $0xb900004a // str w10, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET

// func _uint32_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
Expand All @@ -91,13 +79,7 @@ TEXT ·_uint32_max_min_neon(SB), $0-32
MOVD minout+16(FP), R2
MOVD maxout+24(FP), R3

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x7100043f // cmp w1, #1
WORD $0x910003fd // mov x29, sp
BLT uint32_early_exit

WORD $0x71001c3f // cmp w1, #7
Expand All @@ -113,9 +95,6 @@ uint32_early_exit:
WORD $0x1280000b // mov w11, #-1
WORD $0xb900006a // str w10, [x3]
WORD $0xb900004b // str w11, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
uint32_neon:
WORD $0x927d7109 // and x9, x8, #0xfffffff8
Expand Down Expand Up @@ -157,9 +136,6 @@ uint32_scalar_loop:
uint32_done:
WORD $0xb900006a // str w10, [x3]
WORD $0xb900004b // str w11, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET

// func _int64_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
Expand All @@ -170,13 +146,7 @@ TEXT ·_int64_max_min_neon(SB), $0-32
MOVD minout+16(FP), R2
MOVD maxout+24(FP), R3

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x7100043f // cmp w1, #1
WORD $0x910003fd // mov x29, sp
BLT int64_early_exit

WORD $0x2a0103e8 // mov w8, w1
Expand All @@ -192,9 +162,6 @@ int64_early_exit:
WORD $0xd2f0000b // mov x11, #-9223372036854775808
WORD $0xf900006b // str x11, [x3]
WORD $0xf900004a // str x10, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
int64_neon:
WORD $0x927e7509 // and x9, x8, #0xfffffffc
Expand Down Expand Up @@ -246,9 +213,6 @@ int64_scalar_loop:
int64_done:
WORD $0xf900006b // str x11, [x3]
WORD $0xf900004a // str x10, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET


Expand All @@ -260,13 +224,7 @@ TEXT ·_uint64_max_min_neon(SB), $0-32
MOVD minout+16(FP), R2
MOVD maxout+24(FP), R3

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x7100043f // cmp w1, #1
WORD $0x910003fd // mov x29, sp
BLT uint64_early_exit

WORD $0x71000c3f // cmp w1, #3
Expand All @@ -282,9 +240,6 @@ uint64_early_exit:
WORD $0x9280000b // mov x11, #-1
WORD $0xf900006a // str x10, [x3]
WORD $0xf900004b // str x11, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
uint64_neon:
WORD $0x927e7509 // and x9, x8, #0xfffffffc
Expand Down Expand Up @@ -336,7 +291,4 @@ uint64_scalar_loop:
uint64_done:
WORD $0xf900006a // str x10, [x3]
WORD $0xf900004b // str x11, [x2]
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
9 changes: 0 additions & 9 deletions parquet/internal/bmi/bitmap_neon_arm64.s
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,7 @@ TEXT ·_levels_to_bitmap_neon(SB), $0-32
MOVD numLevels+8(FP), R1
MOVD rhs+16(FP), R2

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x7100043f // cmp w1, #1
WORD $0x910003fd // mov x29, sp
BLT LBB1_3

WORD $0x71000c3f // cmp w1, #3
Expand Down Expand Up @@ -82,9 +76,6 @@ LBB1_7:
WORD $0xaa080168 // orr x8, x11, x8
BNE LBB1_7
LBB1_8:
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
MOVD R8, res+24(FP)
RET

40 changes: 17 additions & 23 deletions parquet/internal/utils/bit_packing_neon_arm64.s
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@
#define LCPI0_196 $0xfffffffcfffffffe
#define LCPI0_200 $0xfffffffeffffffff

TEXT ·_unpack32_neon(SB), $0-40
TEXT ·_unpack32_neon(SB), $496-40

MOVD in+0(FP), R0
MOVD out+8(FP), R1
Expand All @@ -281,19 +281,14 @@ TEXT ·_unpack32_neon(SB), $0-40
// LEAQ LCDATA1<>(SB), BP

// %bb.0:
// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9ba7bfd // stp x29, x30, [sp, #-96]!
WORD $0xd10643e9 // sub x9, sp, #400
WORD $0xa9016ffc // stp x28, x27, [sp, #16]
WORD $0xa90267fa // stp x26, x25, [sp, #32]
WORD $0x910003fd // mov x29, sp
WORD $0xa9035ff8 // stp x24, x23, [sp, #48]
WORD $0xa90457f6 // stp x22, x21, [sp, #64]
WORD $0xa9054ff4 // stp x20, x19, [sp, #80]
WORD $0x927df13f // and sp, x9, #0xfffffffffffffff8
// TODO: do not use x28, x27, or x18 since they are reserved.
// It is probably unnecessary to save the rest of these registers since
// the ABI doesn't have callee saved registers
WORD $0xa91a6ffc // stp x28, x27, [sp, #416]
WORD $0xa91b67fa // stp x26, x25, [sp, #432]
WORD $0xa91c5ff8 // stp x24, x23, [sp, #448]
WORD $0xa91d57f6 // stp x22, x21, [sp, #464]
WORD $0xa91e4ff4 // stp x20, x19, [sp, #480]
WORD $0x11007c48 // add w8, w2, #31
WORD $0x7100005f // cmp w2, #0
WORD $0x1a82b108 // csel w8, w8, w2, lt
Expand Down Expand Up @@ -6919,14 +6914,13 @@ LBB0_158:

LBB0_156:
WORD $0x531b6a60 // lsl w0, w19, #5
WORD $0x910003bf // mov sp, x29
WORD $0xa9454ff4 // ldp x20, x19, [sp, #80]
WORD $0xa94457f6 // ldp x22, x21, [sp, #64]
WORD $0xa9435ff8 // ldp x24, x23, [sp, #48]
WORD $0xa94267fa // ldp x26, x25, [sp, #32]
WORD $0xa9416ffc // ldp x28, x27, [sp, #16]
WORD $0xa8c67bfd // ldp x29, x30, [sp], #96
// Put the stack pointer back where it was
ADD $16, RSP
WORD $0xa95e4ff4 // ldp x20, x19, [sp, #480]
WORD $0xa95d57f6 // ldp x22, x21, [sp, #464]
WORD $0xa95c5ff8 // ldp x24, x23, [sp, #448]
WORD $0xa95b67fa // ldp x26, x25, [sp, #432]
WORD $0xa95a6ffc // ldp x28, x27, [sp, #416]
// The raw compiler-generated body uses x30 as a scratch register. The
// Go-generated prologue saved the return address at the bottom of the frame.
MOVD 0(RSP), R30
MOVD R0, num+32(FP)
RET
10 changes: 0 additions & 10 deletions parquet/internal/utils/unpack_bool_neon_arm64.s
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,6 @@ TEXT ·_bytes_to_bools_neon(SB), $0-32
MOVD out+16(FP), R2
MOVD outlen+24(FP), R3

// The Go ABI saves the frame pointer register one word below the
// caller's frame. Make room so we don't overwrite it. Needs to stay
// 16-byte aligned
SUB $16, RSP
WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
WORD $0x910003fd // mov x29, sp

WORD $0x7100043f // cmp w1, #1
BLT done

Expand Down Expand Up @@ -145,7 +138,4 @@ scalar_next:
JMP scalar_loop

done:
WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
// Put the stack pointer back where it was
ADD $16, RSP
RET
Loading