[BOLT][TEST] Imported small tests, removed duplicate input
Summary: Imported small internal tests. - call_zero.s - cfi_expr_rewrite.s - cfi_insts_count.s - exceptions_pic.test - exceptions_run.test Removed duplicate input file (switch_statement.cpp) (cherry picked from FBD31355466)
This commit is contained in:
parent
7b61cb7812
commit
e903671bbf
|
@ -1,29 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int inc(int x) {
|
||||
switch (x) {
|
||||
case 0: puts("0"); return 1;
|
||||
case 1: puts("1"); return 2;
|
||||
case 2: puts("2"); return 3;
|
||||
case 3: puts("3"); return 4;
|
||||
case 4: puts("4"); return 5;
|
||||
case 5: puts("5"); return 6;
|
||||
default: return x + 1;
|
||||
}
|
||||
}
|
||||
|
||||
int inc_dup(int x) {
|
||||
switch (x) {
|
||||
case 0: puts("0"); return 1;
|
||||
case 1: puts("1"); return 2;
|
||||
case 2: puts("2"); return 3;
|
||||
case 3: puts("3"); return 4;
|
||||
case 4: puts("4"); return 5;
|
||||
case 5: puts("5"); return 6;
|
||||
default: return x + 1;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
return inc(5) - 2*inc_dup(2);
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
# Check that llvm-bolt rejects input that is not a valid ELF executable
|
||||
# bzip2.debuginfo is the result of running "objcopy --only-keep-debug".
|
||||
RUN: %clang %S/Inputs/switch_statement.cpp -g -o %t
|
||||
RUN: %clang %S/Inputs/icf-jump-tables.c -g -o %t
|
||||
RUN: llvm-objcopy --only-keep-debug %t %t.debuginfo
|
||||
RUN: not llvm-bolt %t.debuginfo -o /dev/null |& FileCheck %s
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Check that the .bolt_info section is generated properly.
|
||||
RUN: %clang %S/Inputs/switch_statement.cpp -o %t
|
||||
RUN: %clang %S/Inputs/icf-jump-tables.c -o %t
|
||||
RUN: llvm-bolt %t -o %t.bolt && \
|
||||
RUN: llvm-objdump -s -j .note.bolt_info %t.bolt | grep -v "file format" | \
|
||||
RUN: cut -c 44- | tr -d '\n' | FileCheck %s
|
||||
|
|
38
bolt/test/X86/call_zero.s
Normal file
38
bolt/test/X86/call_zero.s
Normal file
|
@ -0,0 +1,38 @@
|
|||
# Verifies that llvm-bolt ignores function calls to 0.
|
||||
|
||||
# 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 /dev/null -v=2 2>&1 | FileCheck %s
|
||||
# CHECK: Function main has a call to address zero.
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.type main, %function
|
||||
main:
|
||||
# FDATA: 0 [unknown] 0 1 main 0 0 0
|
||||
.cfi_startproc
|
||||
.LBB00:
|
||||
pushq %rbp
|
||||
.cfi_def_cfa_offset 16
|
||||
.cfi_offset %rbp, -16
|
||||
movq %rsp, %rbp
|
||||
.cfi_def_cfa_register %rbp
|
||||
movl $0x0, %eax
|
||||
testq %rax, %rax
|
||||
.LBB00_br: je .Ltmp0
|
||||
# FDATA: 1 main #.LBB00_br# 1 main #.Ltmp0# 0 0
|
||||
# FDATA: 1 main #.LBB00_br# 1 main #.LFT0# 0 0
|
||||
|
||||
.LFT0:
|
||||
movl $0x0, %eax
|
||||
.LFT0_br: callq 0
|
||||
# FDATA: 1 main #.LFT0_br# 1 main #.Ltmp0# 0 0
|
||||
|
||||
.Ltmp0:
|
||||
movl $0x0, %eax
|
||||
popq %rbp
|
||||
.cfi_def_cfa %rsp, 8
|
||||
retq
|
||||
|
||||
.cfi_endproc
|
||||
.size main, .-main
|
695
bolt/test/X86/cfi_expr_rewrite.s
Normal file
695
bolt/test/X86/cfi_expr_rewrite.s
Normal file
|
@ -0,0 +1,695 @@
|
|||
# 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: 3174
|
||||
# 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":
|
116
bolt/test/X86/cfi_instrs_count.s
Normal file
116
bolt/test/X86/cfi_instrs_count.s
Normal file
|
@ -0,0 +1,116 @@
|
|||
# Check that llvm-bolt is able to read a file with DWARF Exception CFI
|
||||
# information and annotate this into a disassembled function.
|
||||
|
||||
# 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 /dev/null -print-cfg 2>&1 | FileCheck %s
|
||||
#
|
||||
# CHECK: Binary Function "_Z7catchitv" after building cfg {
|
||||
# CHECK: CFI Instrs : 6
|
||||
# CHECK: }
|
||||
# CHECK: DWARF CFI Instructions:
|
||||
# CHECK: 0: OpDefCfaOffset
|
||||
# CHECK: 1: OpOffset
|
||||
# CHECK: 2: OpDefCfaRegister
|
||||
# CHECK: 3: OpOffset
|
||||
# CHECK: 4: OpOffset
|
||||
# CHECK: 5: OpDefCfa
|
||||
# CHECK: End of Function "_Z7catchitv"
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.type main, %function
|
||||
main:
|
||||
# FDATA: 0 [unknown] 0 1 main 0 0 0
|
||||
.cfi_startproc
|
||||
.LBB000:
|
||||
pushq %rbp
|
||||
.cfi_def_cfa_offset 16
|
||||
.cfi_offset %rbp, -16
|
||||
movq %rsp, %rbp
|
||||
.cfi_def_cfa_register %rbp
|
||||
movl $0x400c4c, %esi
|
||||
movl $0x6012e0, %edi
|
||||
callq _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
|
||||
movl $0x400908, %esi
|
||||
movq %rax, %rdi
|
||||
callq _ZNSolsEPFRSoS_E@PLT
|
||||
callq _Z7catchitv
|
||||
movl $0x0, %eax
|
||||
leave
|
||||
.cfi_def_cfa %rsp, 8
|
||||
retq
|
||||
|
||||
.cfi_endproc
|
||||
.size main, .-main
|
||||
|
||||
.globl _Z7catchitv
|
||||
.type _Z7catchitv, %function
|
||||
_Z7catchitv:
|
||||
# FDATA: 0 [unknown] 0 1 _Z7catchitv 0 0 0
|
||||
.cfi_startproc
|
||||
.LBB00:
|
||||
pushq %rbp
|
||||
.cfi_def_cfa_offset 16
|
||||
.cfi_offset %rbp, -16
|
||||
movq %rsp, %rbp
|
||||
.cfi_def_cfa_register %rbp
|
||||
pushq %r12
|
||||
pushq %rbx
|
||||
subq $0x10, %rsp
|
||||
.cfi_offset %rbx, -32
|
||||
.cfi_offset %r12, -24
|
||||
callq _Z5raisev
|
||||
.LBB00_br: jmp .Ltmp0
|
||||
# FDATA: 1 _Z7catchitv #.LBB00_br# 1 _Z7catchitv #.Ltmp0# 0 0
|
||||
|
||||
.LLP0:
|
||||
cmpq $0x1, %rdx
|
||||
.LLP0_br: je .Ltmp1
|
||||
# FDATA: 1 _Z7catchitv #.LLP0_br# 1 _Z7catchitv #.Ltmp1# 0 0
|
||||
# FDATA: 1 _Z7catchitv #.LLP0_br# 1 _Z7catchitv #.LFT0# 0 0
|
||||
|
||||
.LFT0:
|
||||
movq %rax, %rdi
|
||||
.LFT0_br: callq _Unwind_Resume@PLT
|
||||
# FDATA: 1 _Z7catchitv #.LFT0_br# 1 _Z7catchitv #.Ltmp1# 0 0
|
||||
|
||||
.Ltmp1:
|
||||
movq %rax, %rdi
|
||||
callq __cxa_begin_catch@PLT
|
||||
movq %rax, -0x18(%rbp)
|
||||
movl $0x400c40, %esi
|
||||
movl $0x6012e0, %edi
|
||||
callq _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
|
||||
.Ltmp1_br: jmp .Ltmp2
|
||||
# FDATA: 1 _Z7catchitv #.Ltmp1_br# 1 _Z7catchitv #.Ltmp2# 0 0
|
||||
|
||||
.LLP1:
|
||||
movl %edx, %ebx
|
||||
movq %rax, %r12
|
||||
callq __cxa_end_catch@PLT
|
||||
movq %r12, %rax
|
||||
movslq %ebx, %rdx
|
||||
movq %rax, %rdi
|
||||
.LLP1_br: callq _Unwind_Resume@PLT
|
||||
# FDATA: 1 _Z7catchitv #.LLP1_br# 1 _Z7catchitv #.Ltmp2# 0 0
|
||||
|
||||
.Ltmp2:
|
||||
.Ltmp2_br: callq __cxa_end_catch@PLT
|
||||
# FDATA: 1 _Z7catchitv #.Ltmp2_br# 1 _Z7catchitv #.Ltmp0# 0 0
|
||||
|
||||
.Ltmp0:
|
||||
addq $0x10, %rsp
|
||||
popq %rbx
|
||||
popq %r12
|
||||
leave
|
||||
.cfi_def_cfa %rsp, 8
|
||||
retq
|
||||
|
||||
.cfi_endproc
|
||||
.size _Z7catchitv, .-_Z7catchitv
|
||||
.set "_Z5raisev", 0
|
||||
.set _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc, 0
|
||||
.set _ZNSolsEPFRSoS_E, 0
|
||||
.set __cxa_begin_catch, 0
|
||||
.set __cxa_end_catch, 0
|
55
bolt/test/runtime/X86/Inputs/exception3.cpp
Normal file
55
bolt/test/runtime/X86/Inputs/exception3.cpp
Normal file
|
@ -0,0 +1,55 @@
|
|||
#include <stdio.h>
|
||||
|
||||
class ExcA {};
|
||||
class ExcB {};
|
||||
class ExcC {};
|
||||
class ExcD {};
|
||||
class ExcE {};
|
||||
class ExcF {};
|
||||
class ExcG {};
|
||||
|
||||
void foo(int a)
|
||||
{
|
||||
if (a > 1)
|
||||
throw ExcG();
|
||||
else
|
||||
throw ExcC();
|
||||
}
|
||||
|
||||
void filter_only(int a) throw (ExcA, ExcB, ExcC, ExcD, ExcE, ExcF) {
|
||||
foo(a);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
asm volatile ("nop;nop;nop;nop;nop");
|
||||
try {
|
||||
try {
|
||||
asm volatile ("nop;nop;nop;nop;nop");
|
||||
throw ExcA();
|
||||
} catch (ExcA) {
|
||||
asm volatile ("nop;nop;nop;nop;nop");
|
||||
printf("catch 2\n");
|
||||
throw new int();
|
||||
}
|
||||
} catch (...) {
|
||||
asm volatile ("nop;nop;nop;nop;nop");
|
||||
printf("catch 1\n");
|
||||
}
|
||||
|
||||
try {
|
||||
asm volatile ("nop;nop;nop;nop;nop");
|
||||
try {
|
||||
asm volatile ("nop;nop;nop;nop;nop");
|
||||
filter_only(argc);
|
||||
} catch (ExcC) {
|
||||
asm volatile ("nop;nop;nop;nop;nop");
|
||||
printf("caught ExcC\n");
|
||||
}
|
||||
} catch (ExcG) {
|
||||
asm volatile ("nop;nop;nop;nop;nop");
|
||||
printf("caught ExcG\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
59
bolt/test/runtime/X86/Inputs/exception4.cpp
Normal file
59
bolt/test/runtime/X86/Inputs/exception4.cpp
Normal file
|
@ -0,0 +1,59 @@
|
|||
#include <stdio.h>
|
||||
|
||||
class ExcA {};
|
||||
class ExcB {};
|
||||
class ExcC {};
|
||||
class ExcD {};
|
||||
class ExcE {};
|
||||
class ExcF {};
|
||||
class ExcG {};
|
||||
|
||||
void foo(int a)
|
||||
{
|
||||
if (a > 1)
|
||||
throw ExcG();
|
||||
else
|
||||
throw ExcC();
|
||||
}
|
||||
|
||||
void filter_only(int a) throw (ExcA, ExcB, ExcC, ExcD, ExcE, ExcF) {
|
||||
foo(a);
|
||||
}
|
||||
|
||||
void never_throws() throw () {
|
||||
printf("this statement is cold and should be outlined\n");
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
for(unsigned i = 0; i < 1000000; ++i) {
|
||||
try {
|
||||
if (argc == 2) {
|
||||
never_throws(); // should be cold
|
||||
}
|
||||
try {
|
||||
if (argc == 2) {
|
||||
never_throws(); // should be cold
|
||||
}
|
||||
throw ExcA();
|
||||
} catch (ExcA) {
|
||||
printf("catch 2\n");
|
||||
throw new int();
|
||||
}
|
||||
} catch (...) {
|
||||
printf("catch 1\n");
|
||||
}
|
||||
|
||||
try {
|
||||
try {
|
||||
filter_only(argc);
|
||||
} catch (ExcC) {
|
||||
printf("caught ExcC\n");
|
||||
}
|
||||
} catch (ExcG) {
|
||||
printf("caught ExcG\n");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
13
bolt/test/runtime/X86/exceptions_pic.test
Normal file
13
bolt/test/runtime/X86/exceptions_pic.test
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Verify that C++ exceptions work after binary re-writing
|
||||
|
||||
REQUIRES: x86_64-linux
|
||||
|
||||
RUN: %clangxx -fpic -Wl,-q %S/Inputs/exception4.cpp -o %t.pic
|
||||
RUN: llvm-bolt %t.pic -o %t && %t 2>&1 | FileCheck %s
|
||||
RUN: llvm-bolt -relocs -use-old-text %t.pic -o %t && %t 2>&1 | FileCheck %s
|
||||
|
||||
CHECK: catch 2
|
||||
CHECK-NEXT: catch 1
|
||||
CHECK-NEXT: caught ExcC
|
||||
|
||||
|
15
bolt/test/runtime/X86/exceptions_run.test
Normal file
15
bolt/test/runtime/X86/exceptions_run.test
Normal file
|
@ -0,0 +1,15 @@
|
|||
# Verify the exceptions handling work after moving code.
|
||||
# The input has dummy nops that are removed by bolt.
|
||||
|
||||
REQUIRES: x86_64-linux
|
||||
|
||||
RUN: %clangxx -g %S/Inputs/exception3.cpp -o %t.exe
|
||||
RUN: llvm-bolt -align-blocks=0 %t.exe -o %t && %t 2>&1 | FileCheck %s
|
||||
RUN: llvm-bolt -reorder-blocks=reverse -align-blocks=0 %t.exe -o %t && %t 2>&1 \
|
||||
RUN: | FileCheck %s
|
||||
|
||||
CHECK: catch 2
|
||||
CHECK-NEXT: catch 1
|
||||
CHECK-NEXT: caught ExcC
|
||||
|
||||
|
Loading…
Reference in a new issue