179807d99SVladislav Khmelevsky# REQUIRES: system-linux 279807d99SVladislav Khmelevsky 379807d99SVladislav Khmelevsky# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown \ 479807d99SVladislav Khmelevsky# RUN: %s -o %t.o 579807d99SVladislav Khmelevsky# RUN: link_fdata %s %t.o %t.fdata 679807d99SVladislav Khmelevsky# RUN: link_fdata %s %t.o %t.fdata2 "FDATA2" 74609f60eSspupyrev# RUN: link_fdata %s %t.o %t.fdata3 "FDATA3" 8d4fdc981SAmir Ayupov# RUN: %clang %cflags %t.o -o %t.exe -Wl,-q 9d648aa1bSMaksim Panchenko# RUN: llvm-bolt %t.exe --data %t.fdata --reorder-blocks=ext-tsp \ 10d648aa1bSMaksim Panchenko# RUN: --print-finalized --loop-inversion-opt -o %t.out \ 11d648aa1bSMaksim Panchenko# RUN: | FileCheck %s 12d648aa1bSMaksim Panchenko# RUN: llvm-bolt %t.exe --data %t.fdata2 --reorder-blocks=ext-tsp \ 13d648aa1bSMaksim Panchenko# RUN: --print-finalized --loop-inversion-opt -o %t.out2 \ 14d648aa1bSMaksim Panchenko# RUN: | FileCheck --check-prefix="CHECK2" %s 15d648aa1bSMaksim Panchenko# RUN: llvm-bolt %t.exe --data %t.fdata3 --reorder-blocks=none \ 16d648aa1bSMaksim Panchenko# RUN: --print-finalized --loop-inversion-opt -o %t.out3 \ 17d648aa1bSMaksim Panchenko# RUN: | FileCheck --check-prefix="CHECK3" %s 1879807d99SVladislav Khmelevsky 19*11791ae7SSayhaan Siddiqui## The case where the loop is used: 2079807d99SVladislav Khmelevsky# FDATA: 1 main 2 1 main #.J1# 0 420 2179807d99SVladislav Khmelevsky# FDATA: 1 main b 1 main #.Jloop# 0 420 2279807d99SVladislav Khmelevsky# FDATA: 1 main b 1 main d 0 1 2379807d99SVladislav Khmelevsky# CHECK: BB Layout : .LBB00, .Ltmp0, .Ltmp1, .LFT0 2479807d99SVladislav Khmelevsky 25*11791ae7SSayhaan Siddiqui## The case where the loop is unused: 2679807d99SVladislav Khmelevsky# FDATA2: 1 main 2 1 main #.J1# 0 420 2779807d99SVladislav Khmelevsky# FDATA2: 1 main b 1 main #.Jloop# 0 1 2879807d99SVladislav Khmelevsky# FDATA2: 1 main b 1 main d 0 420 2979807d99SVladislav Khmelevsky# CHECK2: BB Layout : .LBB00, .Ltmp1, .LFT0, .Ltmp0 3079807d99SVladislav Khmelevsky 31*11791ae7SSayhaan Siddiqui## The case where the loop does not require rotation: 324609f60eSspupyrev# FDATA3: 1 main 2 1 main #.J1# 0 420 334609f60eSspupyrev# FDATA3: 1 main b 1 main #.Jloop# 0 420 344609f60eSspupyrev# FDATA3: 1 main b 1 main d 0 1 354609f60eSspupyrev# CHECK3: BB Layout : .LBB00, .Ltmp0, .Ltmp1, .LFT0 364609f60eSspupyrev 3779807d99SVladislav Khmelevsky .text 3879807d99SVladislav Khmelevsky .globl main 3979807d99SVladislav Khmelevsky .type main, %function 4079807d99SVladislav Khmelevsky .size main, .Lend-main 4179807d99SVladislav Khmelevskymain: 4279807d99SVladislav Khmelevsky xor %eax, %eax 4379807d99SVladislav Khmelevsky jmp .J1 4479807d99SVladislav Khmelevsky.Jloop: 4579807d99SVladislav Khmelevsky inc %rax 4679807d99SVladislav Khmelevsky.J1: 4779807d99SVladislav Khmelevsky cmp $16, %rax 4879807d99SVladislav Khmelevsky jl .Jloop 4979807d99SVladislav Khmelevsky retq 50f0f5d19aSMaksim Panchenko 51f0f5d19aSMaksim Panchenko# For relocations against .text 52f0f5d19aSMaksim Panchenko call exit 5379807d99SVladislav Khmelevsky.Lend: 54