## Check that llvm-bolt is able to parse DWARF expressions in CFI instructions,
## store them in memory and correctly write them back to the output binary.
# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o
# RUN: %clang %cflags %t.o -o %t.exe
# RUN: llvm-bolt %t.exe -o %t && llvm-dwarfdump --eh-frame %t | FileCheck %s
#
# CHECK: DW_CFA_advance_loc: 5
# CHECK-NEXT: DW_CFA_def_cfa: R10 +0
# CHECK-NEXT: DW_CFA_advance_loc: 9
# CHECK-NEXT: DW_CFA_expression: RBP DW_OP_breg6 RBP+0
# CHECK-NEXT: DW_CFA_advance_loc: 5
# CHECK-NEXT: DW_CFA_def_cfa_expression: DW_OP_breg6 RBP-8, DW_OP_deref
# CHECK-NEXT: DW_CFA_advance_loc2: 3130
# CHECK-NEXT: DW_CFA_def_cfa: R10 +0
# CHECK-NEXT: DW_CFA_advance_loc: 5
# CHECK-NEXT: DW_CFA_def_cfa: RSP +8
.text
.globl main
.type main, %function
main:
# FDATA: 0 [unknown] 0 1 main 0 0 0
.cfi_startproc
.LBB06:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
callq blake2b_compress_avx2
movl $0x0, %eax
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.cfi_endproc
.size main, .-main
.globl blake2b_compress_avx2
.type blake2b_compress_avx2, %function
blake2b_compress_avx2:
# FDATA: 0 [unknown] 0 1 blake2b_compress_avx2 0 0 0
.cfi_startproc
.LBB07:
leaq 0x8(%rsp), %r10
.cfi_def_cfa %r10, 0
andq $-0x20, %rsp
pushq -0x8(%r10)
pushq %rbp
.cfi_escape 0x10, 0x06, 0x02, 0x76, 0x00 #
movq %rsp, %rbp
pushq %r10
.cfi_escape 0x0f, 0x03, 0x76, 0x78, 0x06 #
subq $0x170, %rsp
vbroadcasti128 (%rsi), %ymm10
vbroadcasti128 0x10(%rsi), %ymm8
vbroadcasti128 0x30(%rsi), %ymm7
vbroadcasti128 0x70(%rsi), %ymm4
vpunpcklqdq %ymm8, %ymm10, %ymm0
vbroadcasti128 0x20(%rsi), %ymm11
vmovdqa %ymm7, -0x30(%rbp)
vpunpcklqdq -0x30(%rbp), %ymm11, %ymm1
vmovdqa %ymm4, %ymm15
vpblendd $0xf0, %ymm1, %ymm0, %ymm4
vpaddq (%rdi), %ymm4, %ymm13
vpaddq 0x20(%rdi), %ymm13, %ymm13
vmovdqa %ymm4, -0x190(%rbp)
vbroadcasti128 0x60(%rsi), %ymm7
vbroadcasti128 0x50(%rsi), %ymm6
vbroadcasti128 0x40(%rsi), %ymm9
vpunpcklqdq %ymm15, %ymm7, %ymm14
vmovq 0x50(%rdi), %xmm5
vpinsrq $0x1, 0x58(%rdi), %xmm5, %xmm1
vmovq 0x40(%rdi), %xmm5
vpinsrq $0x1, 0x48(%rdi), %xmm5, %xmm0
vinserti128 $0x1, %xmm1, %ymm0, %ymm1
vpunpckhqdq %ymm8, %ymm10, %ymm0
vpxor "blake2b_IV/1"+32(%rip), %ymm1, %ymm1
vpunpckhqdq -0x30(%rbp), %ymm11, %ymm4
vpblendd $0xf0, %ymm4, %ymm0, %ymm0
vmovdqa DATAat0x401380(%rip), %ymm5
vmovdqa %ymm0, -0xb0(%rbp)
vpxor %ymm13, %ymm1, %ymm1
vpaddq -0xb0(%rbp), %ymm13, %ymm13
vpshufd $0xb1, %ymm1, %ymm1
vmovdqa DATAat0x4013a0(%rip), %ymm4
vpaddq "blake2b_IV/1"(%rip), %ymm1, %ymm3
vpxor 0x20(%rdi), %ymm3, %ymm2
vpshufb %ymm5, %ymm2, %ymm2
vpaddq %ymm2, %ymm13, %ymm13
vpxor %ymm1, %ymm13, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm2, %ymm3, %ymm2
vpsrlq $0x3f, %ymm2, %ymm12
vpaddq %ymm2, %ymm2, %ymm2
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm2, %ymm2
vpermq $0x39, %ymm2, %ymm0
vpunpcklqdq %ymm6, %ymm9, %ymm2
vpunpckhqdq %ymm15, %ymm7, %ymm12
vpblendd $0xf0, %ymm14, %ymm2, %ymm2
vmovdqa %ymm2, -0xd0(%rbp)
vpaddq -0xd0(%rbp), %ymm13, %ymm13
vpunpckhqdq %ymm6, %ymm9, %ymm2
vpblendd $0xf0, %ymm12, %ymm2, %ymm2
vmovdqa %ymm2, -0xf0(%rbp)
vmovdqa %ymm15, %ymm12
vpaddq %ymm0, %ymm13, %ymm13
vmovdqa %ymm12, -0x50(%rbp)
vpxor %ymm13, %ymm1, %ymm1
vpaddq -0xf0(%rbp), %ymm13, %ymm13
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm13, %ymm13
vpxor %ymm1, %ymm13, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x39, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm2
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm2, %ymm0, %ymm0
vpunpcklqdq %ymm11, %ymm15, %ymm2
vmovdqa %ymm2, %ymm15
vpunpckhqdq %ymm7, %ymm9, %ymm2
vpblendd $0xf0, %ymm2, %ymm15, %ymm2
vmovdqa %ymm15, -0x1b0(%rbp)
vpermq $0x93, %ymm0, %ymm0
vmovdqa %ymm2, -0x110(%rbp)
vpunpcklqdq %ymm9, %ymm6, %ymm2
vpaddq -0x110(%rbp), %ymm13, %ymm13
vmovdqa %ymm2, %ymm15
vmovdqa -0x30(%rbp), %ymm2
vpalignr $0x8, -0x50(%rbp), %ymm2, %ymm2
vmovdqa %ymm15, -0x1d0(%rbp)
vpaddq %ymm0, %ymm13, %ymm13
vpblendd $0xf0, %ymm2, %ymm15, %ymm12
vpxor %ymm13, %ymm1, %ymm1
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vmovdqa %ymm12, -0x130(%rbp)
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq -0x130(%rbp), %ymm13, %ymm13
vmovdqa -0x30(%rbp), %ymm15
vpunpckhqdq %ymm11, %ymm6, %ymm12
vpaddq %ymm0, %ymm13, %ymm13
vpxor %ymm1, %ymm13, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm2
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm2, %ymm0, %ymm0
vpshufd $0x4e, %ymm10, %ymm2
vpblendd $0xf0, %ymm12, %ymm2, %ymm12
vpermq $0x39, %ymm0, %ymm0
vmovdqa %ymm12, -0x150(%rbp)
vpunpckhqdq %ymm8, %ymm15, %ymm12
vpunpcklqdq %ymm8, %ymm7, %ymm2
vpaddq -0x150(%rbp), %ymm13, %ymm13
vmovdqa %ymm12, -0x70(%rbp)
vmovdqa -0x50(%rbp), %ymm15
vpblendd $0xf0, -0x70(%rbp), %ymm2, %ymm2
vpaddq %ymm0, %ymm13, %ymm13
vmovdqa %ymm2, -0x170(%rbp)
vpxor %ymm13, %ymm1, %ymm1
vpunpckhqdq %ymm15, %ymm11, %ymm12
vpaddq -0x170(%rbp), %ymm13, %ymm13
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vmovdqa %ymm12, -0x90(%rbp)
vpunpcklqdq %ymm10, %ymm9, %ymm12
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm13, %ymm13
vpxor %ymm1, %ymm13, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x39, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm2
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm2, %ymm0, %ymm0
vpalignr $0x8, %ymm6, %ymm7, %ymm2
vpermq $0x93, %ymm0, %ymm0
vpblendd $0xf0, -0x90(%rbp), %ymm2, %ymm2
vpaddq %ymm2, %ymm13, %ymm2
vpblendd $0x33, %ymm8, %ymm7, %ymm13
vpaddq %ymm0, %ymm2, %ymm2
vpblendd $0xf0, %ymm13, %ymm12, %ymm12
vmovdqa -0x30(%rbp), %ymm13
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm12, %ymm2, %ymm12
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm12, %ymm12
vpunpckhqdq %ymm9, %ymm13, %ymm13
vpxor %ymm1, %ymm12, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm2
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm2, %ymm0, %ymm0
vpblendd $0x33, %ymm6, %ymm8, %ymm2
vpermq $0x39, %ymm0, %ymm0
vpblendd $0xf0, %ymm13, %ymm2, %ymm13
vpunpcklqdq -0x30(%rbp), %ymm15, %ymm2
vmovdqa -0x70(%rbp), %ymm15
vpaddq %ymm13, %ymm12, %ymm13
vpalignr $0x8, %ymm10, %ymm11, %ymm12
vpaddq %ymm0, %ymm13, %ymm13
vpblendd $0xf0, %ymm12, %ymm2, %ymm2
vpxor %ymm13, %ymm1, %ymm1
vpaddq %ymm2, %ymm13, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpunpckhqdq %ymm10, %ymm9, %ymm13
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpblendd $0xf0, %ymm14, %ymm13, %ymm13
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x39, %ymm1, %ymm1
vpor %ymm12, %ymm0, %ymm0
vpunpckhqdq %ymm6, %ymm7, %ymm12
vpermq $0x93, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpblendd $0xf0, %ymm12, %ymm15, %ymm12
vmovdqa -0x50(%rbp), %ymm15
vpaddq %ymm12, %ymm2, %ymm12
vpaddq %ymm0, %ymm12, %ymm12
vpblendd $0x33, %ymm11, %ymm15, %ymm14
vpunpcklqdq %ymm6, %ymm8, %ymm15
vpxor %ymm12, %ymm1, %ymm1
vpaddq %ymm13, %ymm12, %ymm13
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm13, %ymm13
vpxor %ymm1, %ymm13, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm2
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm2, %ymm0, %ymm0
vpblendd $0x33, %ymm8, %ymm11, %ymm2
vpermq $0x39, %ymm0, %ymm12
vmovdqa -0x30(%rbp), %ymm0
vpblendd $0xf0, %ymm14, %ymm2, %ymm2
vpaddq %ymm2, %ymm13, %ymm2
vpunpcklqdq %ymm6, %ymm0, %ymm13
vmovdqa %ymm13, %ymm0
vpunpcklqdq %ymm9, %ymm10, %ymm13
vmovdqa %ymm0, -0x1f0(%rbp)
vpaddq %ymm12, %ymm2, %ymm2
vpblendd $0xf0, %ymm13, %ymm0, %ymm0
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm0, %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm12, %ymm3, %ymm12
vpshufb %ymm5, %ymm12, %ymm12
vpaddq %ymm12, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x39, %ymm1, %ymm1
vpxor %ymm12, %ymm3, %ymm12
vpsrlq $0x3f, %ymm12, %ymm0
vpaddq %ymm12, %ymm12, %ymm12
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm0, %ymm12, %ymm12
vpermq $0x93, %ymm12, %ymm0
vpunpckhqdq %ymm11, %ymm9, %ymm12
vpblendd $0xf0, %ymm15, %ymm12, %ymm12
vmovdqa -0x30(%rbp), %ymm15
vpaddq %ymm12, %ymm2, %ymm2
vpaddq %ymm0, %ymm2, %ymm2
vpblendd $0x33, %ymm10, %ymm15, %ymm12
vpxor %ymm2, %ymm1, %ymm1
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpblendd $0xf0, %ymm14, %ymm12, %ymm14
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vmovdqa -0x50(%rbp), %ymm15
vpaddq %ymm14, %ymm2, %ymm2
vpblendd $0x33, -0x30(%rbp), %ymm8, %ymm14
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm0, %ymm0
vpblendd $0x33, %ymm15, %ymm6, %ymm12
vpermq $0x39, %ymm0, %ymm0
vpblendd $0xf0, %ymm14, %ymm12, %ymm12
vpblendd $0x33, %ymm9, %ymm7, %ymm14
vpaddq %ymm12, %ymm2, %ymm2
vpalignr $0x8, %ymm10, %ymm7, %ymm12
vpaddq %ymm0, %ymm2, %ymm2
vpblendd $0xf0, %ymm14, %ymm12, %ymm12
vmovdqa -0x30(%rbp), %ymm14
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm12, %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x39, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm0, %ymm0
vpunpcklqdq -0x30(%rbp), %ymm8, %ymm12
vpblendd $0xf0, %ymm13, %ymm12, %ymm13
vpermq $0x93, %ymm0, %ymm0
vpaddq %ymm13, %ymm2, %ymm2
vpunpcklqdq %ymm6, %ymm7, %ymm12
vpunpckhqdq %ymm8, %ymm6, %ymm13
vpblendd $0xf0, %ymm13, %ymm12, %ymm12
vpaddq %ymm0, %ymm2, %ymm2
vpunpckhqdq %ymm10, %ymm15, %ymm13
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm12, %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm0, %ymm0
vpblendd $0x33, %ymm11, %ymm14, %ymm12
vmovdqa %ymm15, %ymm14
vpermq $0x39, %ymm0, %ymm0
vpblendd $0xf0, %ymm13, %ymm12, %ymm12
vpblendd $0x33, %ymm14, %ymm9, %ymm13
vmovdqa -0x90(%rbp), %ymm15
vpaddq %ymm12, %ymm2, %ymm2
vpunpckhqdq %ymm11, %ymm7, %ymm12
vpblendd $0xf0, %ymm13, %ymm12, %ymm12
vpshufd $0x4e, %ymm9, %ymm13
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm12, %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x39, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm0, %ymm0
vpblendd $0x33, %ymm7, %ymm10, %ymm12
vpermq $0x93, %ymm0, %ymm0
vpblendd $0xf0, -0x1b0(%rbp), %ymm12, %ymm12
vpaddq %ymm12, %ymm2, %ymm2
vpalignr $0x8, %ymm7, %ymm6, %ymm12
vpaddq %ymm0, %ymm2, %ymm2
vpblendd $0xf0, %ymm12, %ymm15, %ymm12
vmovdqa -0x70(%rbp), %ymm15
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm12, %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm0, %ymm0
vpunpcklqdq -0x30(%rbp), %ymm10, %ymm12
vpblendd $0xf0, %ymm13, %ymm12, %ymm12
vpermq $0x39, %ymm0, %ymm0
vpaddq %ymm12, %ymm2, %ymm2
vpblendd $0x33, %ymm8, %ymm6, %ymm12
vpblendd $0x33, %ymm7, %ymm8, %ymm13
vpaddq %ymm0, %ymm2, %ymm2
vpblendd $0xf0, %ymm12, %ymm15, %ymm12
vmovdqa -0x90(%rbp), %ymm15
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm12, %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x39, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm0, %ymm0
vpunpckhqdq -0x30(%rbp), %ymm7, %ymm12
vpblendd $0xf0, %ymm13, %ymm12, %ymm12
vmovdqa %ymm14, %ymm13
vpaddq %ymm12, %ymm2, %ymm2
vpalignr $0x8, %ymm6, %ymm14, %ymm14
vpunpckhqdq %ymm9, %ymm10, %ymm12
vpermq $0x93, %ymm0, %ymm0
vpblendd $0xf0, %ymm12, %ymm14, %ymm12
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm12, %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm0, %ymm0
vpunpcklqdq %ymm8, %ymm9, %ymm12
vpblendd $0xf0, %ymm12, %ymm15, %ymm12
vpermq $0x39, %ymm0, %ymm0
vpaddq %ymm12, %ymm2, %ymm2
vpunpcklqdq %ymm11, %ymm10, %ymm12
vmovdqa %ymm13, %ymm15
vpblendd $0xf0, -0x1f0(%rbp), %ymm12, %ymm12
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm2, %ymm1, %ymm1
vpaddq %ymm12, %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x39, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm12
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm12, %ymm0, %ymm0
vmovdqa -0x30(%rbp), %ymm12
vpermq $0x93, %ymm0, %ymm0
vpunpcklqdq %ymm13, %ymm12, %ymm12
vpalignr $0x8, %ymm6, %ymm10, %ymm13
vpblendd $0xf0, %ymm13, %ymm12, %ymm12
vpunpckhqdq %ymm9, %ymm15, %ymm13
vpalignr $0x8, %ymm8, %ymm9, %ymm9
vpaddq %ymm12, %ymm2, %ymm12
vpalignr $0x8, %ymm10, %ymm6, %ymm6
vpblendd $0xf0, %ymm9, %ymm13, %ymm9
vpaddq %ymm0, %ymm12, %ymm12
vpblendd $0xf0, %ymm6, %ymm7, %ymm6
vpxor %ymm12, %ymm1, %ymm1
vpaddq %ymm9, %ymm12, %ymm12
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm3, %ymm0, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm12, %ymm12
vpxor %ymm1, %ymm12, %ymm1
vpaddq %ymm6, %ymm12, %ymm12
vpshufb %ymm4, %ymm1, %ymm1
vmovdqa -0x30(%rbp), %ymm6
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x93, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm2
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm2, %ymm0, %ymm0
vpblendd $0x33, %ymm8, %ymm6, %ymm2
vpermq $0x39, %ymm0, %ymm0
vpaddq %ymm0, %ymm12, %ymm12
vpblendd $0xf0, %ymm11, %ymm2, %ymm2
vpxor %ymm12, %ymm1, %ymm1
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpaddq %ymm2, %ymm12, %ymm12
vpxor %ymm3, %ymm0, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vmovdqa -0x30(%rbp), %ymm6
vpaddq %ymm0, %ymm12, %ymm12
vpxor %ymm1, %ymm12, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpermq $0x39, %ymm1, %ymm1
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm2
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x4e, %ymm3, %ymm3
vpor %ymm2, %ymm0, %ymm2
vpunpckhqdq %ymm10, %ymm6, %ymm0
vmovdqa -0x1d0(%rbp), %ymm6
vpermq $0x93, %ymm2, %ymm2
vpblendd $0xf0, %ymm0, %ymm6, %ymm0
vpaddq %ymm0, %ymm12, %ymm12
vpunpcklqdq %ymm11, %ymm8, %ymm0
vpblendd $0x33, -0x30(%rbp), %ymm11, %ymm11
vpunpckhqdq %ymm7, %ymm8, %ymm8
vpaddq %ymm2, %ymm12, %ymm12
vpblendd $0xf0, %ymm11, %ymm0, %ymm11
vpblendd $0xf0, %ymm8, %ymm13, %ymm8
vpunpcklqdq %ymm10, %ymm7, %ymm7
vpxor %ymm12, %ymm1, %ymm1
vpaddq %ymm11, %ymm12, %ymm12
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm3, %ymm2, %ymm2
vpshufb %ymm5, %ymm2, %ymm2
vpaddq %ymm2, %ymm12, %ymm12
vpblendd $0xf0, %ymm7, %ymm14, %ymm7
vpxor %ymm1, %ymm12, %ymm1
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpaddq %ymm8, %ymm12, %ymm8
vpxor %ymm2, %ymm3, %ymm2
vpsrlq $0x3f, %ymm2, %ymm0
vpaddq %ymm2, %ymm2, %ymm2
vpermq $0x93, %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpermq $0x39, %ymm2, %ymm2
vpaddq %ymm2, %ymm8, %ymm8
vpermq $0x4e, %ymm3, %ymm3
vpxor %ymm8, %ymm1, %ymm1
vpaddq %ymm7, %ymm8, %ymm8
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm3, %ymm2, %ymm2
vpshufb %ymm5, %ymm2, %ymm2
vpaddq %ymm2, %ymm8, %ymm8
vpxor %ymm1, %ymm8, %ymm1
vpaddq -0x190(%rbp), %ymm8, %ymm8
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm2, %ymm3, %ymm2
vpsrlq $0x3f, %ymm2, %ymm0
vpaddq %ymm2, %ymm2, %ymm2
vpermq $0x39, %ymm1, %ymm1
vpor %ymm0, %ymm2, %ymm2
vpermq $0x93, %ymm2, %ymm0
vpaddq %ymm0, %ymm8, %ymm8
vpermq $0x4e, %ymm3, %ymm3
vpxor %ymm8, %ymm1, %ymm1
vpaddq -0xb0(%rbp), %ymm8, %ymm8
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm3, %ymm0, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm8, %ymm8
vpxor %ymm1, %ymm8, %ymm1
vpaddq -0xd0(%rbp), %ymm8, %ymm8
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpaddq %ymm0, %ymm0, %ymm6
vpermq $0x93, %ymm1, %ymm1
vpermq $0x4e, %ymm3, %ymm3
vpsrlq $0x3f, %ymm0, %ymm2
vpor %ymm2, %ymm6, %ymm6
vpermq $0x39, %ymm6, %ymm6
vpaddq %ymm6, %ymm8, %ymm2
vpxor %ymm2, %ymm1, %ymm1
vpaddq -0xf0(%rbp), %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm3, %ymm6, %ymm6
vpshufb %ymm5, %ymm6, %ymm6
vpaddq %ymm6, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpaddq -0x110(%rbp), %ymm2, %ymm2
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm6, %ymm3, %ymm6
vpsrlq $0x3f, %ymm6, %ymm0
vpaddq %ymm6, %ymm6, %ymm6
vpermq $0x39, %ymm1, %ymm1
vpor %ymm0, %ymm6, %ymm0
vpermq $0x93, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpermq $0x4e, %ymm3, %ymm3
vpxor %ymm2, %ymm1, %ymm1
vpaddq -0x130(%rbp), %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm3, %ymm0, %ymm0
vpshufb %ymm5, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpaddq -0x150(%rbp), %ymm2, %ymm2
vpshufb %ymm4, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm0, %ymm3, %ymm0
vpsrlq $0x3f, %ymm0, %ymm6
vpaddq %ymm0, %ymm0, %ymm0
vpermq $0x93, %ymm1, %ymm1
vpor %ymm6, %ymm0, %ymm0
vpermq $0x39, %ymm0, %ymm0
vpaddq %ymm0, %ymm2, %ymm2
vpermq $0x4e, %ymm3, %ymm3
vpxor %ymm2, %ymm1, %ymm1
vpaddq -0x170(%rbp), %ymm2, %ymm2
vpshufd $0xb1, %ymm1, %ymm1
vpaddq %ymm1, %ymm3, %ymm3
vpxor %ymm3, %ymm0, %ymm0
vpshufb %ymm5, %ymm0, %ymm5
vpaddq %ymm5, %ymm2, %ymm2
vpxor %ymm1, %ymm2, %ymm1
vpshufb %ymm4, %ymm1, %ymm4
vpaddq %ymm4, %ymm3, %ymm0
vpermq $0x39, %ymm4, %ymm4
vpxor %ymm5, %ymm0, %ymm5
vpsrlq $0x3f, %ymm5, %ymm1
vpaddq %ymm5, %ymm5, %ymm5
vpermq $0x4e, %ymm0, %ymm0
vpor %ymm1, %ymm5, %ymm5
vpxor (%rdi), %ymm0, %ymm0
vpermq $0x93, %ymm5, %ymm5
vpxor %ymm2, %ymm0, %ymm2
vmovdqu %ymm2, (%rdi)
vpxor 0x20(%rdi), %ymm5, %ymm5
vpxor %ymm4, %ymm5, %ymm4
vmovdqu %ymm4, 0x20(%rdi)
vzeroupper
xorl %eax, %eax
addq $0x170, %rsp
popq %r10
.cfi_def_cfa %r10, 0
popq %rbp
leaq -0x8(%r10), %rsp
.cfi_def_cfa %rsp, 8
retq
.cfi_endproc
.size blake2b_compress_avx2, .-blake2b_compress_avx2
.section .rodata
"blake2b_IV/1":
"DATAat0x4013a0":
"DATAat0x401380":