ARM: Prevent ARMAsmParser::shouldOmitCCOutOperand() from misidentifying certain Thumb...
[oota-llvm.git] / test / MC / ARM / basic-arm-instructions.s
index 706c61c0473783d8d6a09fd4612ee42331c1a727..66a1ff962d2950081f7547b93303a460a94bc8b3 100644 (file)
@@ -1,4 +1,4 @@
-@ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s
+@ RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 -show-encoding < %s | FileCheck %s
   .syntax unified
   .globl _func
 
@@ -133,14 +133,26 @@ Lforward:
         adr    r2, #-3
 
 @ CHECK: Lback:
-@ CHECK: adr   r2, Lback    @ encoding: [0bAAAAAAA0,0x20'A',0x0f'A',0b1110001A]
+@ CHECK: adr   r2, Lback    @ encoding: [A,0x20'A',0x0f'A',0xe2'A']
 @ CHECK:  @   fixup A - offset: 0, value: Lback, kind: fixup_arm_adr_pcrel_12
-@ CHECK: adr   r3, Lforward @ encoding: [0bAAAAAAA0,0x30'A',0x0f'A',0b1110001A]
+@ CHECK: adr   r3, Lforward @ encoding: [A,0x30'A',0x0f'A',0xe2'A']
 @ CHECK:  @   fixup A - offset: 0, value: Lforward, kind: fixup_arm_adr_pcrel_12
 @ CHECK: Lforward:
 @ CHECK: adr   r2, #3                  @ encoding: [0x03,0x20,0x8f,0xe2]
 @ CHECK: adr   r2, #-3                 @ encoding: [0x03,0x20,0x4f,0xe2]
 
+        adr r1, #-0x0
+        adr r1, #-0x12000000
+        adr r1, #-0x80000001
+        adr r1, #0x12000000
+        adr r1, #0x80000001
+
+@ CHECK: adr   r1, #-0                 @ encoding: [0x00,0x10,0x4f,0xe2]
+@ CHECK: adr   r1, #-301989888         @ encoding: [0x12,0x14,0x4f,0xe2]
+@ CHECK: adr   r1, #2147483647         @ encoding: [0x06,0x11,0x4f,0xe2]
+@ CHECK: adr   r1, #301989888          @ encoding: [0x12,0x14,0x8f,0xe2]
+@ CHECK: adr   r1, #-2147483647        @ encoding: [0x06,0x11,0x8f,0xe2]
+
 
 @------------------------------------------------------------------------------
 @ ADD
@@ -153,6 +165,7 @@ Lforward:
         add r4, r5, r6, asr #5
         add r4, r5, r6, ror #5
         add r6, r7, r8, lsl r9
+        add r4, r4, r3, asl r9
         add r6, r7, r8, lsr r9
         add r6, r7, r8, asr r9
         add r6, r7, r8, ror r9
@@ -172,6 +185,9 @@ Lforward:
         add r6, r7, ror r9
         add r4, r5, rrx
 
+       add r0, #-4
+       add r4, r5, #-21
+
 @ CHECK: add   r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe2]
 @ CHECK: add   r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe0]
 @ CHECK: add   r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe0]
@@ -180,12 +196,12 @@ Lforward:
 @ CHECK: add   r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe0]
 @ CHECK: add   r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe0]
 @ CHECK: add   r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe0]
+@ CHECK: add   r4, r4, r3, lsl r9      @ encoding: [0x13,0x49,0x84,0xe0]
 @ CHECK: add   r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe0]
 @ CHECK: add   r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe0]
 @ CHECK: add   r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe0]
 @ CHECK: add   r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe0]
 
-
 @ CHECK: add   r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe2]
 @ CHECK: add   r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe0]
 @ CHECK: add   r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe0]
@@ -199,6 +215,14 @@ Lforward:
 @ CHECK: add   r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe0]
 @ CHECK: add   r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe0]
 
+@ CHECK: sub   r0, r0, #4              @ encoding: [0x04,0x00,0x40,0xe2]
+@ CHECK: sub   r4, r5, #21             @ encoding: [0x15,0x40,0x45,0xe2]
+
+    @ Test right shift by 32, which is encoded as 0
+    add r3, r1, r2, lsr #32
+    add r3, r1, r2, asr #32
+@ CHECK: add   r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x81,0xe0]
+@ CHECK: add   r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x81,0xe0]
 
 @------------------------------------------------------------------------------
 @ AND
@@ -215,6 +239,7 @@ Lforward:
     and r6, r7, r8, asr r2
     and r6, r7, r8, ror r2
     and r10, r1, r6, rrx
+    and r2, r3, #0x7fffffff
 
     @ destination register is optional
     and r1, #0xf
@@ -242,6 +267,7 @@ Lforward:
 @ CHECK: and   r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0x07,0xe0]
 @ CHECK: and   r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0x07,0xe0]
 @ CHECK: and   r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0x01,0xe0]
+@ CHECK: bic   r2, r3, #-2147483648    @ encoding: [0x02,0x21,0xc3,0xe3]
 
 @ CHECK: and   r1, r1, #15             @ encoding: [0x0f,0x10,0x01,0xe2]
 @ CHECK: and   r10, r10, r1            @ encoding: [0x01,0xa0,0x0a,0xe0]
@@ -256,9 +282,26 @@ Lforward:
 @ CHECK: and   r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0x06,0xe0]
 @ CHECK: and   r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0x0a,0xe0]
 
+    @ Test right shift by 32, which is encoded as 0
+    and r3, r1, r2, lsr #32
+    and r3, r1, r2, asr #32
+@ CHECK: and   r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x01,0xe0]
+@ CHECK: and   r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x01,0xe0]
+
 @------------------------------------------------------------------------------
-@ FIXME: ASR
+@ ASR
 @------------------------------------------------------------------------------
+       asr r2, r4, #32
+       asr r2, r4, #2
+       asr r2, r4, #0
+       asr r4, #2
+
+@ CHECK: asr   r2, r4, #32             @ encoding: [0x44,0x20,0xa0,0xe1]
+@ CHECK: asr   r2, r4, #2              @ encoding: [0x44,0x21,0xa0,0xe1]
+@ CHECK: mov   r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
+@ CHECK: asr   r4, r4, #2              @ encoding: [0x44,0x41,0xa0,0xe1]
+
+
 @------------------------------------------------------------------------------
 @ B
 @------------------------------------------------------------------------------
@@ -348,6 +391,12 @@ Lforward:
 @ CHECK: bic   r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0xc6,0xe1]
 @ CHECK: bic   r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0xca,0xe1]
 
+    @ Test right shift by 32, which is encoded as 0
+    bic r3, r1, r2, lsr #32
+    bic r3, r1, r2, asr #32
+@ CHECK: bic   r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0xc1,0xe1]
+@ CHECK: bic   r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0xc1,0xe1]
+
 @------------------------------------------------------------------------------
 @ BKPT
 @------------------------------------------------------------------------------
@@ -362,15 +411,18 @@ Lforward:
 @------------------------------------------------------------------------------
 
         bl _bar
+        bleq _bar
         blx _bar
         blls #28634268
         blx    #32424576
         blx    #16212288
 
 @ CHECK: bl  _bar @ encoding: [A,A,A,0xeb]
-@ CHECK:   @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
+@ CHECK:   @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbl
+@ CHECK: bleq  _bar @ encoding: [A,A,A,0x0b]
+@ CHECK:   @   fixup A - offset: 0, value: _bar, kind: fixup_arm_condbl
 @ CHECK: blx   _bar @ encoding: [A,A,A,0xfa]
-           @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
+           @   fixup A - offset: 0, value: _bar, kind: fixup_arm_blx
 @ CHECK: blls  #28634268               @ encoding: [0x27,0x3b,0x6d,0x9b]
 @ CHECK: blx   #32424576               @ encoding: [0xa0,0xb0,0x7b,0xfa]
 @ CHECK: blx   #16212288               @ encoding: [0x50,0xd8,0x3d,0xfa]
@@ -407,10 +459,14 @@ Lforward:
 @------------------------------------------------------------------------------
         cdp  p7, #1, c1, c1, c1, #4
         cdp2  p7, #1, c1, c1, c1, #4
+        cdp2   p10, #0, c6, c12, c0, #7
 
 @ CHECK: cdp  p7, #1, c1, c1, c1, #4     @ encoding: [0x81,0x17,0x11,0xee]
 @ CHECK: cdp2  p7, #1, c1, c1, c1, #4    @ encoding: [0x81,0x17,0x11,0xfe]
+@ CHECK: cdp2  p10, #0, c6, c12, c0, #7   @ encoding: [0xe0,0x6a,0x0c,0xfe]
 
+        cdpne  p7, #1, c1, c1, c1, #4
+@ CHECK: cdpne  p7, #1, c1, c1, c1, #4     @ encoding: [0x81,0x17,0x11,0x1e]
 
 @------------------------------------------------------------------------------
 @ CLREX
@@ -473,6 +529,8 @@ Lforward:
         cmp r7, r8, asr r2
         cmp r7, r8, ror r2
         cmp r1, r6, rrx
+        cmp r0, #-2
+        cmp lr, #0
 
 @ CHECK: cmp   r1, #15                 @ encoding: [0x0f,0x00,0x51,0xe3]
 @ CHECK: cmp   r1, r6                  @ encoding: [0x06,0x00,0x51,0xe1]
@@ -486,6 +544,8 @@ Lforward:
 @ CHECK: cmp   r7, r8, asr r2          @ encoding: [0x58,0x02,0x57,0xe1]
 @ CHECK: cmp   r7, r8, ror r2          @ encoding: [0x78,0x02,0x57,0xe1]
 @ CHECK: cmp   r1, r6, rrx             @ encoding: [0x66,0x00,0x51,0xe1]
+@ CHECK: cmn   r0, #2                  @ encoding: [0x02,0x00,0x70,0xe3]
+@ CHECK: cmp  lr, #0                    @ encoding: [0x00,0x00,0x5e,0xe3]
 
 
 @------------------------------------------------------------------------------
@@ -515,6 +575,23 @@ Lforward:
 @------------------------------------------------------------------------------
 @ DMB
 @------------------------------------------------------------------------------
+        dmb #0xf
+        dmb #0xe
+        dmb #0xd
+        dmb #0xc
+        dmb #0xb
+        dmb #0xa
+        dmb #0x9
+        dmb #0x8
+        dmb #0x7
+        dmb #0x6
+        dmb #0x5
+        dmb #0x4
+        dmb #0x3
+        dmb #0x2
+        dmb #0x1
+        dmb #0x0
+
         dmb sy
         dmb st
         dmb sh
@@ -529,6 +606,23 @@ Lforward:
         dmb oshst
         dmb
 
+@ CHECK: dmb   sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
+@ CHECK: dmb   st                      @ encoding: [0x5e,0xf0,0x7f,0xf5]
+@ CHECK: dmb   #0xd                    @ encoding: [0x5d,0xf0,0x7f,0xf5]
+@ CHECK: dmb   #0xc                    @ encoding: [0x5c,0xf0,0x7f,0xf5]
+@ CHECK: dmb   ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
+@ CHECK: dmb   ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
+@ CHECK: dmb   #0x9                    @ encoding: [0x59,0xf0,0x7f,0xf5]
+@ CHECK: dmb   #0x8                    @ encoding: [0x58,0xf0,0x7f,0xf5]
+@ CHECK: dmb   nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
+@ CHECK: dmb   nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
+@ CHECK: dmb   #0x5                    @ encoding: [0x55,0xf0,0x7f,0xf5]
+@ CHECK: dmb   #0x4                    @ encoding: [0x54,0xf0,0x7f,0xf5]
+@ CHECK: dmb   osh                     @ encoding: [0x53,0xf0,0x7f,0xf5]
+@ CHECK: dmb   oshst                   @ encoding: [0x52,0xf0,0x7f,0xf5]
+@ CHECK: dmb   #0x1                    @ encoding: [0x51,0xf0,0x7f,0xf5]
+@ CHECK: dmb   #0x0                    @ encoding: [0x50,0xf0,0x7f,0xf5]
+
 @ CHECK: dmb   sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
 @ CHECK: dmb   st                      @ encoding: [0x5e,0xf0,0x7f,0xf5]
 @ CHECK: dmb   ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
@@ -546,6 +640,26 @@ Lforward:
 @------------------------------------------------------------------------------
 @ DSB
 @------------------------------------------------------------------------------
+        dsb #0xf
+        dsb #0xe
+        dsb #0xd
+        dsb #0xc
+        dsb #0xb
+        dsb #0xa
+        dsb #0x9
+        dsb #0x8
+        dsb #0x7
+        dsb #0x6
+        dsb #0x5
+        dsb #0x4
+        dsb #0x3
+        dsb #0x2
+        dsb #0x1
+        dsb #0x0
+
+        dsb 8
+        dsb 7
+
         dsb sy
         dsb st
         dsb sh
@@ -560,6 +674,26 @@ Lforward:
         dsb oshst
         dsb
 
+@ CHECK: dsb   sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
+@ CHECK: dsb   st                      @ encoding: [0x4e,0xf0,0x7f,0xf5]
+@ CHECK: dsb   #0xd                    @ encoding: [0x4d,0xf0,0x7f,0xf5]
+@ CHECK: dsb   #0xc                    @ encoding: [0x4c,0xf0,0x7f,0xf5]
+@ CHECK: dsb   ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
+@ CHECK: dsb   ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
+@ CHECK: dsb   #0x9                    @ encoding: [0x49,0xf0,0x7f,0xf5]
+@ CHECK: dsb   #0x8                    @ encoding: [0x48,0xf0,0x7f,0xf5]
+@ CHECK: dsb   nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
+@ CHECK: dsb   nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
+@ CHECK: dsb   #0x5                    @ encoding: [0x45,0xf0,0x7f,0xf5]
+@ CHECK: dsb   #0x4                    @ encoding: [0x44,0xf0,0x7f,0xf5]
+@ CHECK: dsb   osh                     @ encoding: [0x43,0xf0,0x7f,0xf5]
+@ CHECK: dsb   oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
+@ CHECK: dsb   #0x1                    @ encoding: [0x41,0xf0,0x7f,0xf5]
+@ CHECK: dsb   #0x0                    @ encoding: [0x40,0xf0,0x7f,0xf5]
+
+@ CHECK: dsb   #0x8                    @ encoding: [0x48,0xf0,0x7f,0xf5]
+@ CHECK: dsb   nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
+
 @ CHECK: dsb   sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
 @ CHECK: dsb   st                      @ encoding: [0x4e,0xf0,0x7f,0xf5]
 @ CHECK: dsb   ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
@@ -574,6 +708,12 @@ Lforward:
 @ CHECK: dsb   oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
 @ CHECK: dsb   sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
 
+@ With capitals
+        dsb SY
+        dsb OSHST
+
+@ CHECK: dsb   sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
+@ CHECK: dsb   oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
 @------------------------------------------------------------------------------
 @ EOR
 @------------------------------------------------------------------------------
@@ -631,16 +771,110 @@ Lforward:
 @ CHECK: eor   r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x26,0xe0]
 @ CHECK: eor   r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x24,0xe0]
 
+    @ Test right shift by 32, which is encoded as 0
+    eor r3, r1, r2, lsr #32
+    eor r3, r1, r2, asr #32
+@ CHECK: eor   r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x21,0xe0]
+@ CHECK: eor   r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x21,0xe0]
 
 @------------------------------------------------------------------------------
 @ ISB
 @------------------------------------------------------------------------------
         isb sy
         isb
+        isb #15
+        isb #1
 
 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
-
+@ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
+@ CHECK: isb #0x1                       @ encoding: [0x61,0xf0,0x7f,0xf5]
+
+
+@------------------------------------------------------------------------------
+@ LDC{L}/LDC2{L}
+@------------------------------------------------------------------------------
+        ldc2 p0, c8, [r1, #4]
+        ldc2 p1, c7, [r2]
+        ldc2 p2, c6, [r3, #-224]
+        ldc2 p3, c5, [r4, #-120]!
+        ldc2 p4, c4, [r5], #16
+        ldc2 p5, c3, [r6], #-72
+        ldc2l p6, c2, [r7, #4]
+        ldc2l p7, c1, [r8]
+        ldc2l p8, c0, [r9, #-224]
+        ldc2l p9, c1, [r10, #-120]!
+        ldc2l p10, c2, [r11], #16
+        ldc2l p11, c3, [r12], #-72
+
+        ldc p12, c4, [r0, #4]
+        ldc p13, c5, [r1]
+        ldc p14, c6, [r2, #-224]
+        ldc p15, c7, [r3, #-120]!
+        ldc p5, c8, [r4], #16
+        ldc p4, c9, [r5], #-72
+        ldcl p3, c10, [r6, #4]
+        ldcl p2, c11, [r7]
+        ldcl p1, c12, [r8, #-224]
+        ldcl p0, c13, [r9, #-120]!
+        ldcl p6, c14, [r10], #16
+        ldcl p7, c15, [r11], #-72
+
+        ldclo p12, c4, [r0, #4]
+        ldchi p13, c5, [r1]
+        ldccs p14, c6, [r2, #-224]
+        ldccc p15, c7, [r3, #-120]!
+        ldceq p5, c8, [r4], #16
+        ldcgt p4, c9, [r5], #-72
+        ldcllt p3, c10, [r6, #4]
+        ldclge p2, c11, [r7]
+        ldclle p1, c12, [r8, #-224]
+        ldclne p0, c13, [r9, #-120]!
+        ldcleq p6, c14, [r10], #16
+        ldclhi p7, c15, [r11], #-72
+
+        ldc2 p2, c8, [r1], { 25 }
+
+@ CHECK: ldc2  p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x91,0xfd]
+@ CHECK: ldc2  p1, c7, [r2]            @ encoding: [0x00,0x71,0x92,0xfd]
+@ CHECK: ldc2  p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x13,0xfd]
+@ CHECK: ldc2  p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x34,0xfd]
+@ CHECK: ldc2  p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xb5,0xfc]
+@ CHECK: ldc2  p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x36,0xfc]
+@ CHECK: ldc2l p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xd7,0xfd]
+@ CHECK: ldc2l p7, c1, [r8]            @ encoding: [0x00,0x17,0xd8,0xfd]
+@ CHECK: ldc2l p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x59,0xfd]
+@ CHECK: ldc2l p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x7a,0xfd]
+@ CHECK: ldc2l p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xfb,0xfc]
+@ CHECK: ldc2l p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x7c,0xfc]
+
+@ CHECK: ldc   p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x90,0xed]
+@ CHECK: ldc   p13, c5, [r1]           @ encoding: [0x00,0x5d,0x91,0xed]
+@ CHECK: ldc   p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x12,0xed]
+@ CHECK: ldc   p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x33,0xed]
+@ CHECK: ldc   p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xb4,0xec]
+@ CHECK: ldc   p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x35,0xec]
+@ CHECK: ldcl  p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xd6,0xed]
+@ CHECK: ldcl  p2, c11, [r7]           @ encoding: [0x00,0xb2,0xd7,0xed]
+@ CHECK: ldcl  p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x58,0xed]
+@ CHECK: ldcl  p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x79,0xed]
+@ CHECK: ldcl  p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xfa,0xec]
+@ CHECK: ldcl  p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x7b,0xec]
+
+@ CHECK: ldclo p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x90,0x3d]
+@ CHECK: ldchi p13, c5, [r1]           @ encoding: [0x00,0x5d,0x91,0x8d]
+@ CHECK: ldchs p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x12,0x2d]
+@ CHECK: ldclo p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x33,0x3d]
+@ CHECK: ldceq p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xb4,0x0c]
+@ CHECK: ldcgt p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x35,0xcc]
+@ CHECK: ldcllt        p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xd6,0xbd]
+@ CHECK: ldclge        p2, c11, [r7]           @ encoding: [0x00,0xb2,0xd7,0xad]
+@ CHECK: ldclle        p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x58,0xdd]
+@ CHECK: ldclne        p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x79,0x1d]
+@ CHECK: ldcleq        p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xfa,0x0c]
+@ CHECK: ldclhi        p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x7b,0x8c]
+
+@ CHECK: ldc2  p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x91,0xfc]
 
 
 @------------------------------------------------------------------------------
@@ -659,6 +893,10 @@ Lforward:
         ldmda     r2!, {r1,r3-r6,sp}
         ldmdb     r2!, {r1,r3-r6,sp}
 
+        @ system version
+        ldm r0, {r0, r2, lr}^
+        ldm sp!, {r0-r3, pc}^
+
 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
 @ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9]
@@ -670,6 +908,8 @@ Lforward:
 @ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9]
 @ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8]
 @ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9]
+@ CHECK: ldm   r0, {r0, r2, lr} ^          @ encoding: [0x05,0x40,0xd0,0xe8]
+@ CHECK: ldm   sp!, {r0, r1, r2, r3, pc} ^ @ encoding: [0x0f,0x80,0xfd,0xe8]
 
 
 @------------------------------------------------------------------------------
@@ -695,11 +935,32 @@ Lforward:
 @ CHECK: ldrhthi r8, [r11], #0          @ encoding: [0xb0,0x80,0xfb,0x80]
 
 @------------------------------------------------------------------------------
-@ FIXME: LSL
+@ LSL
 @------------------------------------------------------------------------------
+       lsl r2, r4, #31
+       lsl r2, r4, #1
+       lsl r2, r4, #0
+       lsl r4, #1
+
+@ CHECK: lsl   r2, r4, #31             @ encoding: [0x84,0x2f,0xa0,0xe1]
+@ CHECK: lsl   r2, r4, #1              @ encoding: [0x84,0x20,0xa0,0xe1]
+@ CHECK: mov   r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
+@ CHECK: lsl   r4, r4, #1              @ encoding: [0x84,0x40,0xa0,0xe1]
+
+
 @------------------------------------------------------------------------------
-@ FIXME: LSR
+@ LSR
 @------------------------------------------------------------------------------
+       lsr r2, r4, #32
+       lsr r2, r4, #2
+       lsr r2, r4, #0
+       lsr r4, #2
+
+@ CHECK: lsr   r2, r4, #32             @ encoding: [0x24,0x20,0xa0,0xe1]
+@ CHECK: lsr   r2, r4, #2              @ encoding: [0x24,0x21,0xa0,0xe1]
+@ CHECK: mov   r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
+@ CHECK: lsr   r4, r4, #2              @ encoding: [0x24,0x41,0xa0,0xe1]
+
 
 @------------------------------------------------------------------------------
 @ MCR/MCR2
@@ -707,8 +968,11 @@ Lforward:
         mcr  p7, #1, r5, c1, c1, #4
         mcr2  p7, #1, r5, c1, c1, #4
 
-@ CHECK: mcr  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xee]
-@ CHECK: mcr2  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xfe]
+@ CHECK: mcr  p7, #1, r5, c1, c1, #4    @ encoding: [0x91,0x57,0x21,0xee]
+@ CHECK: mcr2  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0xfe]
+
+        mcrls  p7, #1, r5, c1, c1, #4
+@ CHECK: mcrls  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0x9e]
 
 @------------------------------------------------------------------------------
 @ MCRR/MCRR2
@@ -716,9 +980,11 @@ Lforward:
         mcrr  p7, #15, r5, r4, c1
         mcrr2  p7, #15, r5, r4, c1
 
-@ CHECK: mcrr  p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xec]
-@ CHECK: mcrr2  p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xfc]
+@ CHECK: mcrr  p7, #15, r5, r4, c1      @ encoding: [0xf1,0x57,0x44,0xec]
+@ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xfc]
 
+        mcrrgt  p7, #15, r5, r4, c1
+@ CHECK: mcrrgt  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xcc]
 
 @------------------------------------------------------------------------------
 @ MLA
@@ -728,10 +994,10 @@ Lforward:
         mlane  r1,r2,r3,r4
         mlasne r1,r2,r3,r4
 
-@ CHECK: mla   r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0xe0]
-@ CHECK: mlas  r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0xe0]
-@ CHECK: mlane         r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0x10]
-@ CHECK: mlasne        r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0x10]
+@ CHECK: mla   r1, r2, r3, r4          @ encoding: [0x92,0x43,0x21,0xe0]
+@ CHECK: mlas  r1, r2, r3, r4          @ encoding: [0x92,0x43,0x31,0xe0]
+@ CHECK: mlane         r1, r2, r3, r4          @ encoding: [0x92,0x43,0x21,0x10]
+@ CHECK: mlasne        r1, r2, r3, r4          @ encoding: [0x92,0x43,0x31,0x10]
 
 @------------------------------------------------------------------------------
 @ MLS
@@ -770,11 +1036,28 @@ Lforward:
         movs r2, r3
         moveq r2, r3
         movseq r2, r3
+        mov r12, r8, lsl #(2 - 2)
+        lsl r2, r3, #(2 - 2)
+        mov r12, r8, lsr #(2 - 2)
+        lsr r2, r3, #(2 - 2)
+        mov r12, r8, asr #(2 - 2)
+        asr r2, r3, #(2 - 2)
+        mov r12, r8, ror #(2 - 2)
+        ror r2, r3, #(2 - 2)
 
 @ CHECK: mov   r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
 @ CHECK: movs  r2, r3                  @ encoding: [0x03,0x20,0xb0,0xe1]
 @ CHECK: moveq r2, r3                  @ encoding: [0x03,0x20,0xa0,0x01]
 @ CHECK: movseq        r2, r3                  @ encoding: [0x03,0x20,0xb0,0x01]
+@ CHECK: mov   r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
+@ CHECK: mov   r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
+@ CHECK: mov   r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
+@ CHECK: mov   r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
+@ CHECK: mov   r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
+@ CHECK: mov   r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
+@ CHECK: mov   r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
+@ CHECK: mov   r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
+
 
 @------------------------------------------------------------------------------
 @ MOVT
@@ -792,10 +1075,21 @@ Lforward:
 @ MRC/MRC2
 @------------------------------------------------------------------------------
         mrc  p14, #0, r1, c1, c2, #4
+        mrc  p15, #7, apsr_nzcv, c15, c6, #6
+        mrc  p15, #7, pc, c15, c6, #6
         mrc2  p14, #0, r1, c1, c2, #4
+        mrc2  p10, #7, apsr_nzcv, c15, c0, #1
+        mrc2  p10, #7, pc, c15, c0, #1
 
-@ CHECK: mrc  p14, #0, r1, c1, c2, #4   @ encoding: [0x92,0x1e,0x11,0xee]
-@ CHECK: mrc2  p14, #0, r1, c1, c2, #4  @ encoding: [0x92,0x1e,0x11,0xfe]
+@ CHECK: mrc  p14, #0, r1, c1, c2, #4             @ encoding: [0x92,0x1e,0x11,0xee]
+@ CHECK: mrc  p15, #7, apsr_nzcv, c15, c6, #6     @ encoding: [0xd6,0xff,0xff,0xee]
+@ CHECK: mrc  p15, #7, pc, c15, c6, #6            @ encoding: [0xd6,0xff,0xff,0xee]
+@ CHECK: mrc2  p14, #0, r1, c1, c2, #4            @ encoding: [0x92,0x1e,0x11,0xfe]
+@ CHECK: mrc2  p10, #7, apsr_nzcv, c15, c0, #1    @ encoding: [0x30,0xfa,0xff,0xfe]
+@ CHECK: mrc2  p10, #7, pc, c15, c0, #1           @ encoding: [0x30,0xfa,0xff,0xfe]
+
+        mrceq  p15, #7, pc, c15, c6, #6
+@ CHECK: mrceq  p15, #7, pc, c15, c6, #6            @ encoding: [0xd6,0xff,0xff,0x0e]
 
 @------------------------------------------------------------------------------
 @ MRRC/MRRC2
@@ -806,6 +1100,8 @@ Lforward:
 @ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
 
+        mrrclo  p7, #1, r5, r4, c1
+@ CHECK: mrrclo  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0x3c]
 
 @------------------------------------------------------------------------------
 @ MRS
@@ -813,9 +1109,9 @@ Lforward:
         mrs  r8, apsr
         mrs  r8, cpsr
         mrs  r8, spsr
-@ CHECK: mrs  r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
-@ CHECK: mrs  r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
-@ CHECK: mrs  r8, spsr @ encoding: [0x00,0x80,0x4f,0xe1]
+@ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
+@ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
+@ CHECK: mrs  r8, spsr                  @ encoding: [0x00,0x80,0x4f,0xe1]
 
 
 
@@ -838,7 +1134,7 @@ Lforward:
         msr  SPSR_fsxc, #5
         msr  cpsr_fsxc, #5
 
-@ CHECK: msr   CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
+@ CHECK: msr   APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
 @ CHECK: msr   APSR_g, #5              @ encoding: [0x05,0xf0,0x24,0xe3]
 @ CHECK: msr   APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
 @ CHECK: msr   APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
@@ -868,20 +1164,20 @@ Lforward:
         msr  SPSR_fsxc, r0
         msr  cpsr_fsxc, r0
 
-@ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
-@ CHECK: msr  APSR_g, r0 @ encoding: [0x00,0xf0,0x24,0xe1]
-@ CHECK: msr  APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
-@ CHECK: msr  APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
-@ CHECK: msr  APSR_nzcvqg, r0 @ encoding: [0x00,0xf0,0x2c,0xe1]
-@ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
-@ CHECK: msr  CPSR_c, r0 @ encoding: [0x00,0xf0,0x21,0xe1]
-@ CHECK: msr  CPSR_x, r0 @ encoding: [0x00,0xf0,0x22,0xe1]
-@ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
-@ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
-@ CHECK: msr  CPSR_fsx, r0 @ encoding: [0x00,0xf0,0x2e,0xe1]
-@ CHECK: msr  SPSR_fc, r0 @ encoding: [0x00,0xf0,0x69,0xe1]
-@ CHECK: msr  SPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x6f,0xe1]
-@ CHECK: msr  CPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x2f,0xe1]
+@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
+@ CHECK: msr  APSR_g, r0                @ encoding: [0x00,0xf0,0x24,0xe1]
+@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
+@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
+@ CHECK: msr  APSR_nzcvqg, r0           @ encoding: [0x00,0xf0,0x2c,0xe1]
+@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
+@ CHECK: msr  CPSR_c, r0                @ encoding: [0x00,0xf0,0x21,0xe1]
+@ CHECK: msr  CPSR_x, r0                @ encoding: [0x00,0xf0,0x22,0xe1]
+@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
+@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
+@ CHECK: msr  CPSR_fsx, r0              @ encoding: [0x00,0xf0,0x2e,0xe1]
+@ CHECK: msr  SPSR_fc, r0               @ encoding: [0x00,0xf0,0x69,0xe1]
+@ CHECK: msr  SPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x6f,0xe1]
+@ CHECK: msr  CPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x2f,0xe1]
 
 @------------------------------------------------------------------------------
 @ MUL
@@ -890,6 +1186,7 @@ Lforward:
         muls r5, r6, r7
         mulgt r5, r6, r7
         mulsle r5, r6, r7
+        mul r11, r5
 
 @ CHECK: mul   r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xe0]
 @ CHECK: muls  r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xe0]
@@ -952,12 +1249,22 @@ Lforward:
 @ CHECK: mvngt r5, r6, asr r7          @ encoding: [0x56,0x57,0xe0,0xc1]
 @ CHECK: mvnslt        r5, r6, ror r7          @ encoding: [0x76,0x57,0xf0,0xb1]
 
+@------------------------------------------------------------------------------
+@ NEG
+@------------------------------------------------------------------------------
+        neg r5, r8
+
+@ CHECK: rsb   r5, r8, #0              @ encoding: [0x00,0x50,0x68,0xe2]
+
+
 @------------------------------------------------------------------------------
 @ NOP
 @------------------------------------------------------------------------------
         nop
+        nop.w
         nopgt
 
+@ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
 @ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
 
@@ -1040,6 +1347,12 @@ Lforward:
 @ CHECK: orrslt        r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
 @ CHECK: orrsgt        r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
 
+    @ Test right shift by 32, which is encoded as 0
+    orr r3, r1, r2, lsr #32
+    orr r3, r1, r2, asr #32
+@ CHECK: orr   r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x81,0xe1]
+@ CHECK: orr   r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x81,0xe1]
+
 @------------------------------------------------------------------------------
 @ PKH
 @------------------------------------------------------------------------------
@@ -1227,6 +1540,20 @@ Lforward:
 @ CHECK: rfeia r1!                     @ encoding: [0x00,0x0a,0xb1,0xf8]
 
 
+@------------------------------------------------------------------------------
+@ ROR
+@------------------------------------------------------------------------------
+       ror r2, r4, #31
+       ror r2, r4, #1
+       ror r2, r4, #0
+       ror r4, #1
+
+@ CHECK: ror   r2, r4, #31             @ encoding: [0xe4,0x2f,0xa0,0xe1]
+@ CHECK: ror   r2, r4, #1              @ encoding: [0xe4,0x20,0xa0,0xe1]
+@ CHECK: mov   r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
+@ CHECK: ror   r4, r4, #1              @ encoding: [0xe4,0x40,0xa0,0xe1]
+
+
 @------------------------------------------------------------------------------
 @ RSB
 @------------------------------------------------------------------------------
@@ -1338,6 +1665,30 @@ Lforward:
 @ CHECK: rsc   r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
 
 @------------------------------------------------------------------------------
+@ RRX/RRXS
+@------------------------------------------------------------------------------
+
+         rrx r0, r1
+        rrx sp, pc
+        rrx pc, lr
+        rrx lr, sp
+
+@ CHECK: rrx   r0, r1                  @ encoding: [0x61,0x00,0xa0,0xe1]
+@ CHECK: rrx   sp, pc                  @ encoding: [0x6f,0xd0,0xa0,0xe1]
+@ CHECK: rrx   pc, lr                  @ encoding: [0x6e,0xf0,0xa0,0xe1]
+@ CHECK: rrx   lr, sp                  @ encoding: [0x6d,0xe0,0xa0,0xe1]
+
+         rrxs r0, r1
+        rrxs sp, pc
+        rrxs pc, lr
+        rrxs lr, sp
+
+@CHECK: rrxs   r0, r1                  @ encoding: [0x61,0x00,0xb0,0xe1]
+@CHECK: rrxs   sp, pc                  @ encoding: [0x6f,0xd0,0xb0,0xe1]
+@CHECK: rrxs   pc, lr                  @ encoding: [0x6e,0xf0,0xb0,0xe1]
+@CHECK: rrxs   lr, sp                  @ encoding: [0x6d,0xe0,0xb0,0xe1]
+
+@ ------------------------------------------------------------------------------
 @ SADD16/SADD8
 @------------------------------------------------------------------------------
         sadd16 r1, r2, r3
@@ -1438,10 +1789,14 @@ Lforward:
 @ SETEND
 @------------------------------------------------------------------------------
         setend be
+        setend BE
         setend le
+        setend LE
 
-        sel    r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
-        selne  r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
+@ CHECK: setend        be                      @ encoding: [0x00,0x02,0x01,0xf1]
+@ CHECK: setend        be                      @ encoding: [0x00,0x02,0x01,0xf1]
+@ CHECK: setend        le                      @ encoding: [0x00,0x00,0x01,0xf1]
+@ CHECK: setend        le                      @ encoding: [0x00,0x00,0x01,0xf1]
 
 
 @------------------------------------------------------------------------------
@@ -1450,8 +1805,9 @@ Lforward:
         sev
         seveq
 
-@ CHECK: sev                             @ encoding: [0x04,0xf0,0x20,0xe3]
-@ CHECK: seveq                           @ encoding: [0x04,0xf0,0x20,0x03]
+@ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
+@ CHECK: seveq                          @ encoding: [0x04,0xf0,0x20,0x03]
+
 
 @------------------------------------------------------------------------------
 @ SHADD16/SHADD8
@@ -1490,15 +1846,6 @@ Lforward:
 @ CHECK: shsub8        r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
 @ CHECK: shsub8gt      r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
 
-@------------------------------------------------------------------------------
-@ SMC
-@------------------------------------------------------------------------------
-        smc #0xf
-        smceq #0
-
-@ CHECK: smc   #15                     @ encoding: [0x7f,0x00,0x60,0xe1]
-@ CHECK: smceq #0                      @ encoding: [0x70,0x00,0x60,0x01]
-
 @------------------------------------------------------------------------------
 @ SMLABB/SMLABT/SMLATB/SMLATT
 @------------------------------------------------------------------------------
@@ -1683,7 +2030,7 @@ Lforward:
 
 
 @------------------------------------------------------------------------------
-@ SMULBB/SMLALBT/SMLALTB/SMLALTT
+@ SMULBB/SMULBT/SMULTB/SMULTT
 @------------------------------------------------------------------------------
         smulbb r3, r9, r0
         smulbt r5, r4, r1
@@ -1778,16 +2125,59 @@ Lforward:
 @ CHECK: srsia sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
 @ CHECK: srsib sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
 
-@ CHECK: srsda sp, #11                 @ encoding: [0x0b,0x05,0x4d,0xf8]
-@ CHECK: srsdb sp, #10                 @ encoding: [0x0a,0x05,0x4d,0xf9]
-@ CHECK: srsia sp, #9                  @ encoding: [0x09,0x05,0xcd,0xf8]
-@ CHECK: srsib sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf9]
+@ CHECK: srsib sp, #11                 @ encoding: [0x0b,0x05,0xcd,0xf9]
+@ CHECK: srsia sp, #10                 @ encoding: [0x0a,0x05,0xcd,0xf8]
+@ CHECK: srsdb sp, #9                  @ encoding: [0x09,0x05,0x4d,0xf9]
+@ CHECK: srsda sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
 
-@ CHECK: srsda sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
+@ CHECK: srsib sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
+@ CHECK: srsia sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
 @ CHECK: srsdb sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
+@ CHECK: srsda sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
+
+@ CHECK: srsia sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
 @ CHECK: srsia sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
-@ CHECK: srsib sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
 
+@ Compatibility aliases.
+        srsda #5
+        srsdb #1
+        srsia #0
+        srsib #15
+
+        srsda #31!
+        srsdb #19!
+        srsia #2!
+        srsib #14!
+
+        srsfa #11
+        srsea #10
+        srsfd #9
+        srsed #5
+
+        srsfa #5!
+        srsea #5!
+        srsfd #5!
+        srsed #5!
+
+        srs #5
+        srs #5!
+
+@ CHECK: srsda sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
+@ CHECK: srsdb sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
+@ CHECK: srsia sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
+@ CHECK: srsib sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
+@ CHECK: srsda sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
+@ CHECK: srsdb sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
+@ CHECK: srsia sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
+@ CHECK: srsib sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
+@ CHECK: srsib sp, #11                 @ encoding: [0x0b,0x05,0xcd,0xf9]
+@ CHECK: srsia sp, #10                 @ encoding: [0x0a,0x05,0xcd,0xf8]
+@ CHECK: srsdb sp, #9                  @ encoding: [0x09,0x05,0x4d,0xf9]
+@ CHECK: srsda sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
+@ CHECK: srsib sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
+@ CHECK: srsia sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
+@ CHECK: srsdb sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
+@ CHECK: srsda sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
 @ CHECK: srsia sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
 @ CHECK: srsia sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
 
@@ -1840,6 +2230,91 @@ Lforward:
 @ CHECK: ssub8 r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
 @ CHECK: ssub8eq       r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
 
+@------------------------------------------------------------------------------
+@ STC{L}/STC2{L}
+@------------------------------------------------------------------------------
+        stc2 p0, c8, [r1, #4]
+        stc2 p1, c7, [r2]
+        stc2 p2, c6, [r3, #-224]
+        stc2 p3, c5, [r4, #-120]!
+        stc2 p4, c4, [r5], #16
+        stc2 p5, c3, [r6], #-72
+        stc2l p6, c2, [r7, #4]
+        stc2l p7, c1, [r8]
+        stc2l p8, c0, [r9, #-224]
+        stc2l p9, c1, [r10, #-120]!
+        stc2l p10, c2, [r11], #16
+        stc2l p11, c3, [r12], #-72
+
+        stc p12, c4, [r0, #4]
+        stc p13, c5, [r1]
+        stc p14, c6, [r2, #-224]
+        stc p15, c7, [r3, #-120]!
+        stc p5, c8, [r4], #16
+        stc p4, c9, [r5], #-72
+        stcl p3, c10, [r6, #4]
+        stcl p2, c11, [r7]
+        stcl p1, c12, [r8, #-224]
+        stcl p0, c13, [r9, #-120]!
+        stcl p6, c14, [r10], #16
+        stcl p7, c15, [r11], #-72
+
+        stclo p12, c4, [r0, #4]
+        stchi p13, c5, [r1]
+        stccs p14, c6, [r2, #-224]
+        stccc p15, c7, [r3, #-120]!
+        stceq p5, c8, [r4], #16
+        stcgt p4, c9, [r5], #-72
+        stcllt p3, c10, [r6, #4]
+        stclge p2, c11, [r7]
+        stclle p1, c12, [r8, #-224]
+        stclne p0, c13, [r9, #-120]!
+        stcleq p6, c14, [r10], #16
+        stclhi p7, c15, [r11], #-72
+
+        stc2 p2, c8, [r1], { 25 }
+
+@ CHECK: stc2  p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x81,0xfd]
+@ CHECK: stc2  p1, c7, [r2]            @ encoding: [0x00,0x71,0x82,0xfd]
+@ CHECK: stc2  p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x03,0xfd]
+@ CHECK: stc2  p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x24,0xfd]
+@ CHECK: stc2  p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xa5,0xfc]
+@ CHECK: stc2  p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x26,0xfc]
+@ CHECK: stc2l p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xc7,0xfd]
+@ CHECK: stc2l p7, c1, [r8]            @ encoding: [0x00,0x17,0xc8,0xfd]
+@ CHECK: stc2l p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x49,0xfd]
+@ CHECK: stc2l p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x6a,0xfd]
+@ CHECK: stc2l p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xeb,0xfc]
+@ CHECK: stc2l p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x6c,0xfc]
+
+@ CHECK: stc   p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0xed]
+@ CHECK: stc   p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0xed]
+@ CHECK: stc   p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0xed]
+@ CHECK: stc   p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0xed]
+@ CHECK: stc   p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0xec]
+@ CHECK: stc   p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xec]
+@ CHECK: stcl  p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xed]
+@ CHECK: stcl  p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xed]
+@ CHECK: stcl  p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xed]
+@ CHECK: stcl  p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0xed]
+@ CHECK: stcl  p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0xec]
+@ CHECK: stcl  p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0xec]
+
+@ CHECK: stclo p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0x3d]
+@ CHECK: stchi p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0x8d]
+@ CHECK: stchs p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0x2d]
+@ CHECK: stclo p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0x3d]
+@ CHECK: stceq p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0x0c]
+@ CHECK: stcgt p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xcc]
+@ CHECK: stcllt        p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xbd]
+@ CHECK: stclge        p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xad]
+@ CHECK: stclle        p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xdd]
+@ CHECK: stclne        p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0x1d]
+@ CHECK: stcleq        p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0x0c]
+@ CHECK: stclhi        p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0x8c]
+
+@ CHECK: stc2  p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x81,0xfc]
+
 
 @------------------------------------------------------------------------------
 @ STM*
@@ -1858,7 +2333,7 @@ Lforward:
         stmdb     r0!, {r1,r5,r7,sp}
 
 @ CHECK: stm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
-@ CHECK: stm   r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8]
+@ CHECK: stm   r3, {r1, r3, r4, r5, r6, lr} @ encoding: [0x7a,0x40,0x83,0xe8]
 @ CHECK: stmib r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
 @ CHECK: stmda r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
 @ CHECK: stmdb r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
@@ -1866,8 +2341,8 @@ Lforward:
 
 @ CHECK: stm   r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
 @ CHECK: stmib r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
-@ CHECK: stmda sp!, {r1, r3, r4, r5, r6} @ encoding: [0x7a,0x00,0x2d,0xe8]
-@ CHECK: stmdb r0!, {r1, r5, r7, sp}   @ encoding: [0xa2,0x20,0x20,0xe9]
+@ CHECK: stmda sp!, {r1, r3, r4, r5, r6}     @ encoding: [0x7a,0x00,0x2d,0xe8]
+@ CHECK: stmdb r0!, {r1, r5, r7, sp}         @ encoding: [0xa2,0x20,0x20,0xe9]
 
 
 @------------------------------------------------------------------------------
@@ -1890,7 +2365,7 @@ Lforward:
         strpl  r3, [r10, #0]!
 
 @ CHECK: strpl r3, [r10, #-0]!         @ encoding: [0x00,0x30,0x2a,0x55]
-@ CHECK: strpl r3, [r10]!              @ encoding: [0x00,0x30,0xaa,0x55]
+@ CHECK: strpl r3, [r10, #0]!          @ encoding: [0x00,0x30,0xaa,0x55]
 
 @------------------------------------------------------------------------------
 @ SUB
@@ -1945,6 +2420,11 @@ Lforward:
 @ CHECK: sub   r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
 @ CHECK: sub   r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
 
+    @ Test right shift by 32, which is encoded as 0
+    sub r3, r1, r2, lsr #32
+    sub r3, r1, r2, asr #32
+@ CHECK: sub   r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x41,0xe0]
+@ CHECK: sub   r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x41,0xe0]
 
 @------------------------------------------------------------------------------
 @ SVC
@@ -1981,12 +2461,9 @@ Lforward:
 
 @ CHECK: sxtab r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
 @ CHECK: sxtab r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
-@ CHECK: sxtablt       r6, r2, r9, ror #8
-                                        @ encoding: [0x79,0x64,0xa2,0xb6]
-@ CHECK: sxtab r5, r1, r4, ror #16
-                                        @ encoding: [0x74,0x58,0xa1,0xe6]
-@ CHECK: sxtab r7, r8, r3, ror #24
-                                        @ encoding: [0x73,0x7c,0xa8,0xe6]
+@ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xa2,0xb6]
+@ CHECK: sxtab r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xa1,0xe6]
+@ CHECK: sxtab r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xa8,0xe6]
 
 
 @------------------------------------------------------------------------------
@@ -2000,12 +2477,9 @@ Lforward:
 
 @ CHECK: sxtab16ge     r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
 @ CHECK: sxtab16       r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
-@ CHECK: sxtab16       r3, r5, r8, ror #8
-                                        @ encoding: [0x78,0x34,0x85,0xe6]
-@ CHECK: sxtab16       r3, r2, r1, ror #16
-                                        @ encoding: [0x71,0x38,0x82,0xe6]
-@ CHECK: sxtab16eq     r1, r2, r3, ror #24
-                                        @ encoding: [0x73,0x1c,0x82,0x06]
+@ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x78,0x34,0x85,0xe6]
+@ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x71,0x38,0x82,0xe6]
+@ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x73,0x1c,0x82,0x06]
 
 @------------------------------------------------------------------------------
 @ SXTAH
@@ -2018,12 +2492,9 @@ Lforward:
 
 @ CHECK: sxtah r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
 @ CHECK: sxtahhi       r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
-@ CHECK: sxtah r3, r8, r3, ror #8
-                                        @ encoding: [0x73,0x34,0xb8,0xe6]
-@ CHECK: sxtahlo       r2, r2, r4, ror #16
-                                        @ encoding: [0x74,0x28,0xb2,0x36]
-@ CHECK: sxtah r9, r3, r3, ror #24
-                                        @ encoding: [0x73,0x9c,0xb3,0xe6]
+@ CHECK: sxtah r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xb8,0xe6]
+@ CHECK: sxtahlo r2, r2, r4, ror #16    @ encoding: [0x74,0x28,0xb2,0x36]
+@ CHECK: sxtah r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xb3,0xe6]
 
 @------------------------------------------------------------------------------
 @ SXTB
@@ -2036,12 +2507,9 @@ Lforward:
 
 @ CHECK: sxtbge        r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
 @ CHECK: sxtb  r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
-@ CHECK: sxtb  r6, r9, ror #8
-                                        @ encoding: [0x79,0x64,0xaf,0xe6]
-@ CHECK: sxtblo        r5, r1, ror #16
-                                        @ encoding: [0x71,0x58,0xaf,0x36]
-@ CHECK: sxtb  r8, r3, ror #24
-                                        @ encoding: [0x73,0x8c,0xaf,0xe6]
+@ CHECK: sxtb  r6, r9, ror #8          @ encoding: [0x79,0x64,0xaf,0xe6]
+@ CHECK: sxtblo        r5, r1, ror #16         @ encoding: [0x71,0x58,0xaf,0x36]
+@ CHECK: sxtb  r8, r3, ror #24         @ encoding: [0x73,0x8c,0xaf,0xe6]
 
 
 @------------------------------------------------------------------------------
@@ -2055,12 +2523,9 @@ Lforward:
 
 @ CHECK: sxtb16        r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
 @ CHECK: sxtb16        r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
-@ CHECK: sxtb16hs      r3, r5, ror #8
-                                        @ encoding: [0x75,0x34,0x8f,0x26]
-@ CHECK: sxtb16        r3, r1, ror #16
-                                        @ encoding: [0x71,0x38,0x8f,0xe6]
-@ CHECK: sxtb16ge      r2, r3, ror #24
-                                        @ encoding: [0x73,0x2c,0x8f,0xa6]
+@ CHECK: sxtb16hs      r3, r5, ror #8  @ encoding: [0x75,0x34,0x8f,0x26]
+@ CHECK: sxtb16        r3, r1, ror #16         @ encoding: [0x71,0x38,0x8f,0xe6]
+@ CHECK: sxtb16ge      r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6]
 
 
 @------------------------------------------------------------------------------
@@ -2074,17 +2539,9 @@ Lforward:
 
 @ CHECK: sxthne        r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
 @ CHECK: sxth  r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
-@ CHECK: sxth  r3, r8, ror #8
-                                        @ encoding: [0x78,0x34,0xbf,0xe6]
-@ CHECK: sxthle        r2, r2, ror #16
-                                        @ encoding: [0x72,0x28,0xbf,0xd6]
-@ CHECK: sxth  r9, r3, ror #24
-                                        @ encoding: [0x73,0x9c,0xbf,0xe6]
-
-
-@------------------------------------------------------------------------------
-@ FIXME: TBB/TBH
-@------------------------------------------------------------------------------
+@ CHECK: sxth  r3, r8, ror #8          @ encoding: [0x78,0x34,0xbf,0xe6]
+@ CHECK: sxthle        r2, r2, ror #16         @ encoding: [0x72,0x28,0xbf,0xd6]
+@ CHECK: sxth  r9, r3, ror #24         @ encoding: [0x73,0x9c,0xbf,0xe6]
 
 
 @------------------------------------------------------------------------------
@@ -2222,7 +2679,7 @@ Lforward:
         umaallt r3, r4, r5, r6
 
 @ CHECK: umaal r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
-@ CHECK: umaallt       r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xb0]
+@ CHECK: umaallt       r3, r4, r5, r6  @ encoding: [0x95,0x36,0x44,0xb0]
 
 
 @------------------------------------------------------------------------------
@@ -2319,7 +2776,6 @@ Lforward:
 @------------------------------------------------------------------------------
 @ USAT
 @------------------------------------------------------------------------------
-
         usat   r8, #1, r10
         usat   r8, #4, r10, lsl #0
         usat   r8, #5, r10, lsl #31
@@ -2332,6 +2788,7 @@ Lforward:
 @ CHECK: usat  r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
 @ CHECK: usat  r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
 
+
 @------------------------------------------------------------------------------
 @ USAT16
 @------------------------------------------------------------------------------
@@ -2376,12 +2833,9 @@ Lforward:
 
 @ CHECK: uxtab r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
 @ CHECK: uxtab r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
-@ CHECK: uxtablt       r6, r2, r9, ror #8
-                                        @ encoding: [0x79,0x64,0xe2,0xb6]
-@ CHECK: uxtab r5, r1, r4, ror #16
-                                        @ encoding: [0x74,0x58,0xe1,0xe6]
-@ CHECK: uxtab r7, r8, r3, ror #24
-                                        @ encoding: [0x73,0x7c,0xe8,0xe6]
+@ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xe2,0xb6]
+@ CHECK: uxtab r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xe1,0xe6]
+@ CHECK: uxtab r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xe8,0xe6]
 
 
 @------------------------------------------------------------------------------
@@ -2395,12 +2849,10 @@ Lforward:
 
 @ CHECK: uxtab16ge     r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
 @ CHECK: uxtab16       r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
-@ CHECK: uxtab16       r3, r5, r8, ror #8
-                                        @ encoding: [0x78,0x34,0xc5,0xe6]
-@ CHECK: uxtab16       r3, r2, r1, ror #16
-                                        @ encoding: [0x71,0x38,0xc2,0xe6]
-@ CHECK: uxtab16eq     r1, r2, r3, ror #24
-                                        @ encoding: [0x73,0x1c,0xc2,0x06]
+@ CHECK: uxtab16       r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6]
+@ CHECK: uxtab16       r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6]
+@ CHECK: uxtab16eq     r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06]
+
 
 @------------------------------------------------------------------------------
 @ UXTAH
@@ -2413,12 +2865,9 @@ Lforward:
 
 @ CHECK: uxtah r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
 @ CHECK: uxtahhi       r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
-@ CHECK: uxtah r3, r8, r3, ror #8
-                                        @ encoding: [0x73,0x34,0xf8,0xe6]
-@ CHECK: uxtahlo       r2, r2, r4, ror #16
-                                        @ encoding: [0x74,0x28,0xf2,0x36]
-@ CHECK: uxtah r9, r3, r3, ror #24
-                                        @ encoding: [0x73,0x9c,0xf3,0xe6]
+@ CHECK: uxtah r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xf8,0xe6]
+@ CHECK: uxtahlo       r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36]
+@ CHECK: uxtah r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xf3,0xe6]
 
 @------------------------------------------------------------------------------
 @ UXTB
@@ -2431,12 +2880,9 @@ Lforward:
 
 @ CHECK: uxtbge        r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
 @ CHECK: uxtb  r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
-@ CHECK: uxtb  r6, r9, ror #8
-                                        @ encoding: [0x79,0x64,0xef,0xe6]
-@ CHECK: uxtblo        r5, r1, ror #16
-                                        @ encoding: [0x71,0x58,0xef,0x36]
-@ CHECK: uxtb  r8, r3, ror #24
-                                        @ encoding: [0x73,0x8c,0xef,0xe6]
+@ CHECK: uxtb  r6, r9, ror #8          @ encoding: [0x79,0x64,0xef,0xe6]
+@ CHECK: uxtblo        r5, r1, ror #16         @ encoding: [0x71,0x58,0xef,0x36]
+@ CHECK: uxtb  r8, r3, ror #24         @ encoding: [0x73,0x8c,0xef,0xe6]
 
 
 @------------------------------------------------------------------------------
@@ -2450,12 +2896,9 @@ Lforward:
 
 @ CHECK: uxtb16        r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
 @ CHECK: uxtb16        r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
-@ CHECK: uxtb16hs      r3, r5, ror #8
-                                        @ encoding: [0x75,0x34,0xcf,0x26]
-@ CHECK: uxtb16        r3, r1, ror #16
-                                        @ encoding: [0x71,0x38,0xcf,0xe6]
-@ CHECK: uxtb16ge      r2, r3, ror #24
-                                        @ encoding: [0x73,0x2c,0xcf,0xa6]
+@ CHECK: uxtb16hs      r3, r5, ror #8  @ encoding: [0x75,0x34,0xcf,0x26]
+@ CHECK: uxtb16        r3, r1, ror #16         @ encoding: [0x71,0x38,0xcf,0xe6]
+@ CHECK: uxtb16ge      r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6]
 
 
 @------------------------------------------------------------------------------
@@ -2469,12 +2912,10 @@ Lforward:
 
 @ CHECK: uxthne        r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
 @ CHECK: uxth  r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
-@ CHECK: uxth  r3, r8, ror #8
-                                        @ encoding: [0x78,0x34,0xff,0xe6]
-@ CHECK: uxthle        r2, r2, ror #16
-                                        @ encoding: [0x72,0x28,0xff,0xd6]
-@ CHECK: uxth  r9, r3, ror #24
-                                        @ encoding: [0x73,0x9c,0xff,0xe6]
+@ CHECK: uxth  r3, r8, ror #8          @ encoding: [0x78,0x34,0xff,0xe6]
+@ CHECK: uxthle        r2, r2, ror #16         @ encoding: [0x72,0x28,0xff,0xd6]
+@ CHECK: uxth  r9, r3, ror #24         @ encoding: [0x73,0x9c,0xff,0xe6]
+
 
 @------------------------------------------------------------------------------
 @ WFE/WFI/YIELD
@@ -2485,10 +2926,20 @@ Lforward:
         wfilt
         yield
         yieldne
-
-@ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
-@ CHECK: wfehi @ encoding: [0x02,0xf0,0x20,0x83]
-@ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
-@ CHECK: wfilt @ encoding: [0x03,0xf0,0x20,0xb3]
-@ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
-@ CHECK: yieldne @ encoding: [0x01,0xf0,0x20,0x13]
+        hint #4
+        hint #3
+        hint #2
+        hint #1
+        hint #0
+
+@ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
+@ CHECK: wfehi                          @ encoding: [0x02,0xf0,0x20,0x83]
+@ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
+@ CHECK: wfilt                          @ encoding: [0x03,0xf0,0x20,0xb3]
+@ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
+@ CHECK: yieldne                        @ encoding: [0x01,0xf0,0x20,0x13]
+@ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
+@ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
+@ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
+@ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
+@ CHECK: nop                            @ encoding: [0x00,0xf0,0x20,0xe3]