xref: /llvm-project/bolt/test/X86/avx512-trap.test (revision 11791ae7b0b05b8bd8d806331ff51da618912cf8)
1*11791ae7SSayhaan Siddiqui## Check that BOLT inserts trap instruction at entry to functions that use AVX-512.
2*11791ae7SSayhaan Siddiqui## Check that AVX-512 instruction is updated correctly when -trap-avx512=0 is passed.
38331f75eSAmir Ayupov
4da766ceaSAmir AyupovRUN: llvm-mc -filetype=obj -triple=x86_64-unknown-unknown -o %t.o \
5da766ceaSAmir AyupovRUN:   %S/Inputs/avx512.s
6da766ceaSAmir AyupovRUN: ld.lld %t.o -o %t -q
7da766ceaSAmir AyupovRUN: llvm-objdump -d --disassemble-symbols=use_avx512 %t | \
8da766ceaSAmir AyupovRUN:   FileCheck %s --check-prefix=CHECK-DIS-NO-TRAP
9da766ceaSAmir Ayupov
10d648aa1bSMaksim PanchenkoRUN: llvm-bolt %t --trap-avx512=1 -o %t.bolt --lite=0 2>&1 | FileCheck %s
11da766ceaSAmir AyupovRUN: llvm-objdump -d --disassemble-symbols=use_avx512 %t.bolt | \
12da766ceaSAmir AyupovRUN:   FileCheck %s --check-prefix=CHECK-DIS
13da766ceaSAmir Ayupov
14d648aa1bSMaksim PanchenkoRUN: llvm-bolt %t --trap-avx512=0 -o %t.bolt --lite=0
15da766ceaSAmir AyupovRUN: llvm-objdump -d --disassemble-symbols=use_avx512 %t.bolt | \
16da766ceaSAmir AyupovRUN:   FileCheck %s --check-prefix=CHECK-DIS-NO-TRAP
178331f75eSAmir Ayupov
188331f75eSAmir AyupovCHECK: BOLT-WARNING: 1 function will trap on entry
198331f75eSAmir Ayupov
20*11791ae7SSayhaan Siddiqui## Check that we have two ud2 instructions - one per entry.
218331f75eSAmir AyupovCHECK-DIS:      use_avx512
228331f75eSAmir AyupovCHECK-DIS-NEXT:    ud2
238331f75eSAmir AyupovCHECK-DIS-NEXT:    ud2
248331f75eSAmir Ayupov
25*11791ae7SSayhaan Siddiqui## Check that we generate correct AVX-512
268331f75eSAmir AyupovCHECK-DIS-NO-TRAP:      use_avx512
278331f75eSAmir AyupovCHECK-DIS-NO-TRAP:          62 e2 f5 70 2c da    	vscalefpd
28