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