1# RUN: llvm-mc -filetype=obj -triple x86_64 --x86-align-branch-boundary=32 --x86-align-branch=call+indirect %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s --check-prefixes=CHECK,X64 2# RUN: llvm-mc -filetype=obj -triple i386 --x86-align-branch-boundary=32 --x86-align-branch=call+indirect %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s --check-prefixes=CHECK,X86 3 4 # Exercise cases where the instruction to be aligned has a variant symbol 5 # operand, and we can't add before it since linker may rewrite it. 6 7 .text 8 .global foo 9 10foo: 11 .p2align 5 12 .rept 30 13 int3 14 .endr 15 # CHECK: 1d: int3 16 # X64: 1e: callq 17 # X86: 1e: calll 18 # CHECK: 23: int3 19 call ___tls_get_addr@PLT 20 int3 21 22 .p2align 5 23 .rept 30 24 int3 25 .endr 26 # CHECK: 5d: int3 27 # X64: 5e: callq *(%ecx) 28 # X64: 65: int3 29 # X86: 5e: calll *(%ecx) 30 # X86: 64: int3 31 call *___tls_get_addr@GOT(%ecx) 32 int3 33 34 .p2align 5 35 .rept 30 36 int3 37 .endr 38 # CHECK: 9d: int3 39 # X64: 9e: callq *(%eax) 40 # X64: a1: int3 41 # X86: 9e: calll *(%eax) 42 # X86: a0: int3 43 call *foo@tlscall(%eax) 44 int3 45 46 .p2align 5 47 .rept 30 48 int3 49 .endr 50 # CHECK: dd: int3 51 # X64: de: jmpq *(%eax) 52 # X64: e1: int3 53 # X86: de: jmpl *(%eax) 54 # X86: e0: int3 55 jmp *foo@tlscall(%eax) 56 int3 57