// 20240504 djb: add note.GNU-stack // 20221231 djb: port hidden to macos; tnx thom wiggers // 20221230 djb: add linker line // linker define vec_reduce_asm #include "crypto_asm_hidden.h" #define vec_reduce_asm CRYPTO_SHARED_NAMESPACE(vec_reduce_asm) #define _vec_reduce_asm _CRYPTO_SHARED_NAMESPACE(vec_reduce_asm) # qhasm: int64 input_0 # qhasm: int64 input_1 # qhasm: int64 input_2 # qhasm: int64 input_3 # qhasm: int64 input_4 # qhasm: int64 input_5 # qhasm: stack64 input_6 # qhasm: stack64 input_7 # qhasm: int64 caller_r11 # qhasm: int64 caller_r12 # qhasm: int64 caller_r13 # qhasm: int64 caller_r14 # qhasm: int64 caller_r15 # qhasm: int64 caller_rbx # qhasm: int64 caller_rbp # qhasm: int64 t # qhasm: int64 c # qhasm: int64 r # qhasm: enter vec_reduce_asm .p2align 5 ASM_HIDDEN _vec_reduce_asm ASM_HIDDEN vec_reduce_asm .global _vec_reduce_asm .global vec_reduce_asm _vec_reduce_asm: vec_reduce_asm: mov %rsp,%r11 and $31,%r11 add $0,%r11 sub %r11,%rsp # qhasm: r = 0 # asm 1: mov $0,>r=int64#7 # asm 2: mov $0,>r=%rax mov $0,%rax # qhasm: t = mem64[ input_0 + 88 ] # asm 1: movq 88(t=int64#2 # asm 2: movq 88(t=%rsi movq 88(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 80(t=%rsi movq 80(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 72(t=%rsi movq 72(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 64(t=%rsi movq 64(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 56(t=%rsi movq 56(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 48(t=%rsi movq 48(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 40(t=%rsi movq 40(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 32(t=%rsi movq 32(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 24(t=%rsi movq 24(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 16(t=%rsi movq 16(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#2 # asm 2: movq 8(t=%rsi movq 8(%rdi),%rsi # qhasm: c = count(t) # asm 1: popcnt c=int64#2 # asm 2: popcnt c=%rsi popcnt %rsi, %rsi # qhasm: (uint32) c &= 1 # asm 1: and $1,t=int64#1 # asm 2: movq 0(t=%rdi movq 0(%rdi),%rdi # qhasm: c = count(t) # asm 1: popcnt c=int64#1 # asm 2: popcnt c=%rdi popcnt %rdi, %rdi # qhasm: (uint32) c &= 1 # asm 1: and $1,