# 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