[dwarfdump] Dump full filenames as DW_AT_(decl|call)_file attribute values
[oota-llvm.git] / test / MC / ARM / basic-thumb-instructions.s
index d47b8eb0fa3bc491acec55004942d3bad5308e48..30ab733375ba9a059d1b391e3cc53eb85773f3df 100644 (file)
@@ -1,4 +1,10 @@
+@---
+@ Run these test in both Thumb1 and Thumb2 modes, as all of the encodings
+@ should be valid, and parse the same, in both.
+@---
 @ RUN: llvm-mc -triple=thumbv6-apple-darwin -show-encoding < %s | FileCheck %s
+@ RUN: llvm-mc -triple=thumbv7-apple-darwin -show-encoding < %s | FileCheck %s
+@ RUN: llvm-mc -triple=thumbebv7-unknown-unknown -show-encoding < %s | FileCheck --check-prefix=CHECK-BE %s
   .syntax unified
   .globl _func
 
@@ -54,12 +60,16 @@ _func:
         add sp, sp, #4
         add r2, sp, #8
         add r2, sp, #1020
+       add sp, sp, #-8
+       add sp, #-8
 
 @ CHECK: add   sp, #4                  @ encoding: [0x01,0xb0]
 @ CHECK: add   sp, #508                @ encoding: [0x7f,0xb0]
 @ CHECK: add   sp, #4                  @ encoding: [0x01,0xb0]
 @ CHECK: add   r2, sp, #8              @ encoding: [0x02,0xaa]
 @ CHECK: add   r2, sp, #1020           @ encoding: [0xff,0xaa]
+@ CHECK: sub   sp, #8                  @ encoding: [0x82,0xb0]
+@ CHECK: sub   sp, #8                  @ encoding: [0x82,0xb0]
 
 
 @------------------------------------------------------------------------------
@@ -76,11 +86,17 @@ _func:
 @ ADR
 @------------------------------------------------------------------------------
         adr r2, _baz
-        adr    r2, #3
+        adr r5, #0
+        adr r2, #4
+        adr r3, #1020
 
 @ CHECK: adr   r2, _baz                @ encoding: [A,0xa2]
-            @   fixup A - offset: 0, value: _baz, kind: fixup_thumb_adr_pcrel_10
-@ CHECK: adr   r2, #3                  @ encoding: [0x03,0xa2]
+@ CHECK:    @   fixup A - offset: 0, value: _baz, kind: fixup_thumb_adr_pcrel_10
+@ CHECK-BE: adr        r2, _baz                @ encoding: [0xa2,A]
+@ CHECK-BE:    @   fixup A - offset: 0, value: _baz, kind: fixup_thumb_adr_pcrel_10
+@ CHECK: adr   r5, #0                  @ encoding: [0x00,0xa5]
+@ CHECK: adr   r2, #4                  @ encoding: [0x01,0xa2]
+@ CHECK: adr   r3, #1020               @ encoding: [0xff,0xa3]
 
 @------------------------------------------------------------------------------
 @ ASR (immediate)
@@ -88,10 +104,16 @@ _func:
         asrs r2, r3, #32
         asrs r2, r3, #5
         asrs r2, r3, #1
+        asrs r5, #21
+        asrs r5, r5, #21
+        asrs r3, r5, #21
 
 @ CHECK: asrs  r2, r3, #32             @ encoding: [0x1a,0x10]
 @ CHECK: asrs  r2, r3, #5              @ encoding: [0x5a,0x11]
 @ CHECK: asrs  r2, r3, #1              @ encoding: [0x5a,0x10]
+@ CHECK: asrs  r5, r5, #21             @ encoding: [0x6d,0x15]
+@ CHECK: asrs  r5, r5, #21             @ encoding: [0x6d,0x15]
+@ CHECK: asrs  r3, r5, #21             @ encoding: [0x6b,0x15]
 
 
 @------------------------------------------------------------------------------
@@ -109,13 +131,21 @@ _func:
         beq _bar
         b       #1838
         b       #-420
+        beq     #-256
+        beq     #160
 
 @ CHECK: b     _baz                    @ encoding: [A,0xe0'A']
-             @   fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_br
+@ CHECK:     @   fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_br
+@ CHECK-BE: b  _baz                    @ encoding: [0xe0'A',A]
+@ CHECK-BE:     @   fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_br
 @ CHECK: beq   _bar                    @ encoding: [A,0xd0]
-             @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bcc
+@ CHECK:     @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bcc
+@ CHECK-BE: beq        _bar                    @ encoding: [0xd0,A]
+@ CHECK-BE:     @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bcc
 @ CHECK: b       #1838                   @ encoding: [0x97,0xe3]
 @ CHECK: b       #-420                   @ encoding: [0x2e,0xe7]
+@ CHECK: beq     #-256                   @ encoding: [0x80,0xd0]
+@ CHECK: beq     #160                    @ encoding: [0x50,0xd0]
 
 @------------------------------------------------------------------------------
 @ BL/BLX
@@ -150,10 +180,14 @@ _func:
         bl _bar
         blx _baz
 
-@ CHECK: bl    _bar                    @ encoding: [A,0xf0'A',A,0xf8'A']
-             @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bl
-@ CHECK: blx   _baz                    @ encoding: [A,0xf0'A',A,0xe8'A']
-             @   fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_blx
+@ CHECK: bl    _bar                    @ encoding: [A,0xf0'A',A,0xd0'A']
+@ CHECK:     @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bl
+@ CHECK-BE: bl _bar                    @ encoding: [0xf0'A',A,0xd0'A',A]
+@ CHECK-BE:     @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bl
+@ CHECK: blx   _baz                    @ encoding: [A,0xf0'A',A,0xc0'A']
+@ CHECK:     @   fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_blx
+@ CHECK-BE: blx        _baz                    @ encoding: [0xf0'A',A,0xc0'A',A]
+@ CHECK-BE:     @   fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_blx
 
 
 @------------------------------------------------------------------------------
@@ -192,6 +226,16 @@ _func:
 @ CHECK: cmp   r3, r4                  @ encoding: [0xa3,0x42]
 @ CHECK: cmp   r8, r1                  @ encoding: [0x88,0x45]
 
+@------------------------------------------------------------------------------
+@ CPS
+@------------------------------------------------------------------------------
+
+        cpsie f
+        cpsid a
+
+@ CHECK: cpsie f                        @ encoding: [0x61,0xb6]
+@ CHECK: cpsid a                        @ encoding: [0x74,0xb6]
+
 @------------------------------------------------------------------------------
 @ EOR
 @------------------------------------------------------------------------------
@@ -239,9 +283,11 @@ _func:
         ldr     r3, #368
 
 @ CHECK: ldr   r1, _foo                @ encoding: [A,0x49]
-             @   fixup A - offset: 0, value: _foo, kind: fixup_arm_thumb_cp
-@ CHECK: ldr     r3, #604                @ encoding: [0x97,0x4b]
-@ CHECK: ldr     r3, #368                @ encoding: [0x5c,0x4b]
+@ CHECK:     @   fixup A - offset: 0, value: _foo, kind: fixup_arm_thumb_cp
+@ CHECK-BE: ldr        r1, _foo                @ encoding: [0x49,A]
+@ CHECK-BE:     @   fixup A - offset: 0, value: _foo, kind: fixup_arm_thumb_cp
+@ CHECK: ldr     r3, [pc, #604]         @ encoding: [0x97,0x4b]
+@ CHECK: ldr     r3, [pc, #368]         @ encoding: [0x5c,0x4b]
 
 @------------------------------------------------------------------------------
 @ LDR (register)
@@ -306,9 +352,15 @@ _func:
 @------------------------------------------------------------------------------
         lsls r4, r5, #0
         lsls r4, r5, #4
+        lsls r3, #12
+        lsls r3, r3, #12
+        lsls r1, r3, #12
 
 @ CHECK: lsls  r4, r5, #0              @ encoding: [0x2c,0x00]
 @ CHECK: lsls  r4, r5, #4              @ encoding: [0x2c,0x01]
+@ CHECK: lsls  r3, r3, #12             @ encoding: [0x1b,0x03]
+@ CHECK: lsls  r3, r3, #12             @ encoding: [0x1b,0x03]
+@ CHECK: lsls  r1, r3, #12             @ encoding: [0x19,0x03]
 
 
 @------------------------------------------------------------------------------
@@ -324,9 +376,15 @@ _func:
 @------------------------------------------------------------------------------
         lsrs r1, r3, #1
         lsrs r1, r3, #32
+        lsrs r4, #20
+        lsrs r4, r4, #20
+        lsrs r2, r4, #20
 
 @ CHECK: lsrs  r1, r3, #1              @ encoding: [0x59,0x08]
 @ CHECK: lsrs  r1, r3, #32             @ encoding: [0x19,0x08]
+@ CHECK: lsrs  r4, r4, #20             @ encoding: [0x24,0x0d]
+@ CHECK: lsrs  r4, r4, #20             @ encoding: [0x24,0x0d]
+@ CHECK: lsrs  r2, r4, #20             @ encoding: [0x22,0x0d]
 
 
 @------------------------------------------------------------------------------
@@ -363,9 +421,11 @@ _func:
 @ MUL
 @------------------------------------------------------------------------------
         muls r1, r2, r1
+        muls r2, r2, r3
         muls r3, r4
 
 @ CHECK: muls  r1, r2, r1              @ encoding: [0x51,0x43]
+@ CHECK: muls  r2, r3, r2              @ encoding: [0x5a,0x43]
 @ CHECK: muls  r3, r4, r3              @ encoding: [0x63,0x43]
 
 
@@ -384,15 +444,6 @@ _func:
 
 @ CHECK: rsbs  r3, r4, #0              @ encoding: [0x63,0x42]
 
-
-@------------------------------------------------------------------------------
-@ NOP
-@------------------------------------------------------------------------------
-        nop
-
-@ CHECK: nop                            @ encoding: [0xc0,0x46]
-
-
 @------------------------------------------------------------------------------
 @ ORR
 @------------------------------------------------------------------------------
@@ -611,13 +662,3 @@ _func:
 @ CHECK: uxth  r1, r4                  @ encoding: [0xa1,0xb2]
 
 
-@------------------------------------------------------------------------------
-@ WFE/WFI/YIELD
-@------------------------------------------------------------------------------
-        wfe
-        wfi
-        yield
-
-@ CHECK: wfe                             @ encoding: [0x20,0xbf]
-@ CHECK: wfi                             @ encoding: [0x30,0xbf]
-@ CHECK: yield                           @ encoding: [0x10,0xbf]