1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
# RUN: llvm-mc -filetype=obj -triple x86_64 --x86-align-branch-boundary=32 --x86-align-branch=jcc %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s --check-prefixes=JCC
# RUN: llvm-mc -filetype=obj -triple x86_64 --x86-align-branch-boundary=32 --x86-align-branch=jmp %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s --check-prefixes=JMP
# RUN: llvm-mc -filetype=obj -triple x86_64 --x86-align-branch-boundary=32 --x86-align-branch=indirect %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s --check-prefixes=IND
# RUN: llvm-mc -filetype=obj -triple x86_64 --x86-align-branch-boundary=32 --x86-align-branch=call %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s --check-prefixes=CAL
# RUN: llvm-mc -filetype=obj -triple x86_64 --x86-align-branch-boundary=32 --x86-align-branch=ret %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s --check-prefixes=RET
# Exercise cases where only one kind of instruction is asked to be aligned.
# Fused instruction cases are excluded.
.text
.globl foo
.p2align 5
foo:
.p2align 5
.rept 30
int3
.endr
# JCC: 20: jne
# JMP: 1e: jne
# IND: 1e: jne
# CAL: 1e: jne
# RET: 1e: jne
jne foo
int3
.p2align 5
.rept 30
int3
.endr
# JCC: 5e: jmp
# JMP: 60: jmp
# IND: 5e: jmp
# CAL: 5e: jmp
# RET: 5e: jmp
jmp foo
int3
.p2align 5
.rept 30
int3
.endr
# JCC: 9e: jmpq *%rax
# JMP: 9e: jmpq *%rax
# IND: a0: jmpq *%rax
# CAL: 9e: jmpq *%rax
# RET: 9e: jmpq *%rax
jmp *%rax
int3
.p2align 5
.rept 30
int3
.endr
# JCC: de: callq *%rax
# JMP: de: callq *%rax
# IND: de: callq *%rax
# CAL: e0: callq *%rax
# RET: de: callq *%rax
call *%rax
int3
.p2align 5
.rept 30
int3
.endr
# JCC: 11e: retq
# JMP: 11e: retq
# IND: 11e: retq
# CAL: 11e: retq
# RET: 120: retq
ret $0
int3
.p2align 5
.rept 29
int3
.endr
# JCC: 15d: cmpq %rax, %rbp
# JCC: 160: je
# JMP: 15d: cmpq %rax, %rbp
# JMP: 160: je
# IND: 15d: cmpq %rax, %rbp
# IND: 160: je
# CAL: 15d: cmpq %rax, %rbp
# CAL: 160: je
# RET: 15d: cmpq %rax, %rbp
# RET: 160: je
cmp %rax, %rbp
je foo
int3
|