159d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ 259d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s 32c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \ 42c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainar# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s 559d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky 659d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# Test some variations of padding to the end of a bundle. 759d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky 859d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky .text 959d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Benderskyfoo: 1059d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky .bundle_align_mode 4 1159d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky 1259d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# Each of these callq instructions is 5 bytes long 1359d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky callq bar 1459d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky callq bar 1559d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky .bundle_lock align_to_end 1659d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky callq bar 1759d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky .bundle_unlock 1859d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# To align this group to a bundle end, we need a 1-byte NOP. 1959d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# CHECK: a: nop 2059d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# CHECK-NEXT: b: callq 2159d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky 2259d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky callq bar 2359d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky callq bar 2459d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky .bundle_lock align_to_end 2559d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky callq bar 2659d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky callq bar 2759d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky .bundle_unlock 2859d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# Here we have to pad until the end of the *next* boundary because 2959d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# otherwise the group crosses a boundary. 3059d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# CHECK: 1a: nop 31b11917c1aa7348a67d80149fa9613f09a8d56f14Derek Schuff# The nop sequence may be implemented as one instruction or many, but if 32b11917c1aa7348a67d80149fa9613f09a8d56f14Derek Schuff# it's one instruction, that instruction cannot itself cross the boundary. 33b11917c1aa7348a67d80149fa9613f09a8d56f14Derek Schuff# CHECK: 20: nop 3459d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# CHECK-NEXT: 26: callq 3559d152197d741ab930dfc99ced3cac1b8bc8bef9Eli Bendersky# CHECK-NEXT: 2b: callq 36