Fix encoding of CBZ/CBNZ Thumb2 instructions with immediate offsets rather than labels.
[oota-llvm.git] / test / MC / ARM / basic-thumb2-instructions.s
1 @ RUN: llvm-mc -triple=thumbv7-apple-darwin -show-encoding < %s | FileCheck %s
2   .syntax unified
3   .globl _func
4
5 @ Check that the assembler can handle the documented syntax from the ARM ARM.
6 @ For complex constructs like shifter operands, check more thoroughly for them
7 @ once then spot check that following instructions accept the form generally.
8 @ This gives us good coverage while keeping the overall size of the test
9 @ more reasonable.
10
11
12 @ FIXME: Some 3-operand instructions have a 2-operand assembly syntax.
13
14 _func:
15 @ CHECK: _func
16
17 @------------------------------------------------------------------------------
18 @ ADC (immediate)
19 @------------------------------------------------------------------------------
20         adc r0, r1, #4
21         adcs r0, r1, #0
22         adc r1, r2, #255
23         adc r3, r7, #0x00550055
24         adc r8, r12, #0xaa00aa00
25         adc r9, r7, #0xa5a5a5a5
26         adc r5, r3, #0x87000000
27         adc r4, r2, #0x7f800000
28         adc r4, r2, #0x00000680
29
30 @ CHECK: adc    r0, r1, #4              @ encoding: [0x41,0xf1,0x04,0x00]
31 @ CHECK: adcs   r0, r1, #0              @ encoding: [0x51,0xf1,0x00,0x00]
32 @ CHECK: adc    r1, r2, #255            @ encoding: [0x42,0xf1,0xff,0x01]
33 @ CHECK: adc    r3, r7, #5570645        @ encoding: [0x47,0xf1,0x55,0x13]
34 @ CHECK: adc    r8, r12, #2852170240    @ encoding: [0x4c,0xf1,0xaa,0x28]
35 @ CHECK: adc    r9, r7, #2779096485     @ encoding: [0x47,0xf1,0xa5,0x39]
36 @ CHECK: adc    r5, r3, #2264924160     @ encoding: [0x43,0xf1,0x07,0x45]
37 @ CHECK: adc    r4, r2, #2139095040     @ encoding: [0x42,0xf1,0xff,0x44]
38 @ CHECK: adc    r4, r2, #1664           @ encoding: [0x42,0xf5,0xd0,0x64]
39
40 @------------------------------------------------------------------------------
41 @ CBZ/CBNZ
42 @------------------------------------------------------------------------------
43         cbnz    r7, #6
44         cbnz    r7, #12
45
46 @ CHECK: cbnz    r7, #6                  @ encoding: [0x1f,0xb9]
47 @ CHECK: cbnz    r7, #12                 @ encoding: [0x37,0xb9]
48
49 @------------------------------------------------------------------------------
50 @ IT
51 @------------------------------------------------------------------------------
52 @ Test encodings of a few full IT blocks, not just the IT instruction
53
54         iteet eq
55         addeq r0, r1, r2
56         nopne
57         subne r5, r6, r7
58         addeq r1, r2, #4
59
60 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
61 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
62 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
63 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
64 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]