xref: /llvm-project/llvm/test/MC/ARM/subtarget-nop.s (revision e63455d5e0e5d148215a61c0e4d10f00aaf6eb56)
1*e63455d5SPeter Smith// RUN: llvm-mc %s --triple=arm-linux-gnueabihf -filetype=obj | llvm-objdump --no-show-raw-insn --triple=armv7 -d - | FileCheck %s
2*e63455d5SPeter Smith
3*e63455d5SPeter Smith// Check that the architectural nop is only produced for subtargets that
4*e63455d5SPeter Smith// support it. This includes nop padding for alignment.
5*e63455d5SPeter Smith .syntax unified
6*e63455d5SPeter Smith .arch armv6
7*e63455d5SPeter Smithfoo:
8*e63455d5SPeter Smith mov r1, r0
9*e63455d5SPeter Smith nop
10*e63455d5SPeter Smith .p2align 4
11*e63455d5SPeter Smith bx lr
12*e63455d5SPeter Smith
13*e63455d5SPeter Smith .arch armv7-a
14*e63455d5SPeter Smithbar:
15*e63455d5SPeter Smith mov r1, r0
16*e63455d5SPeter Smith nop
17*e63455d5SPeter Smith .p2align 4
18*e63455d5SPeter Smith bx lr
19*e63455d5SPeter Smith
20*e63455d5SPeter Smith .arch armv4t
21*e63455d5SPeter Smithbaz:
22*e63455d5SPeter Smith mov r1, r0
23*e63455d5SPeter Smith nop
24*e63455d5SPeter Smith .p2align 4
25*e63455d5SPeter Smith bx lr
26*e63455d5SPeter Smith
27*e63455d5SPeter Smith// CHECK: 00000000 <foo>:
28*e63455d5SPeter Smith// CHECK-NEXT:  0: mov     r1, r0
29*e63455d5SPeter Smith// CHECK-NEXT:  4: mov     r0, r0
30*e63455d5SPeter Smith// CHECK-NEXT:  8: mov     r0, r0
31*e63455d5SPeter Smith// CHECK-NEXT:  c: mov     r0, r0
32*e63455d5SPeter Smith// CHECK-NEXT: 10: bx      lr
33*e63455d5SPeter Smith
34*e63455d5SPeter Smith// CHECK: 00000014 <bar>:
35*e63455d5SPeter Smith// CHECK-NEXT: 14: mov     r1, r0
36*e63455d5SPeter Smith// CHECK-NEXT: 18: nop
37*e63455d5SPeter Smith// CHECK-NEXT: 1c: nop
38*e63455d5SPeter Smith// CHECK-NEXT: 20: bx      lr
39*e63455d5SPeter Smith
40*e63455d5SPeter Smith// CHECK: 00000024 <baz>:
41*e63455d5SPeter Smith// CHECK-NEXT: 24: mov     r1, r0
42*e63455d5SPeter Smith// CHECK-NEXT: 28: mov     r0, r0
43*e63455d5SPeter Smith// CHECK-NEXT: 2c: mov     r0, r0
44*e63455d5SPeter Smith// CHECK-NEXT: 30: bx      lr
45