Thumb2 assembly parsing and encoding for LDR pre-indexed w/ writeback.
[oota-llvm.git] / test / MC / ARM / basic-thumb2-instructions.s
index c041015fedf435e833fc3776db976df0e53c1b7f..c88eb24f284323995c42135f410feba0976f17b8 100644 (file)
@@ -530,6 +530,87 @@ _func:
 @ CHECK: ldr.w pc, [r7, #257]          @ encoding: [0xd7,0xf8,0x01,0xf1]
 
 
+@------------------------------------------------------------------------------
+@ LDR(literal)
+@------------------------------------------------------------------------------
+        ldr.w r5, _foo
+
+@ CHECK: ldr.w r5, _foo                @ encoding: [0x5f'A',0xf8'A',A,0x50'A']
+            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
+
+
+@------------------------------------------------------------------------------
+@ LDR(register)
+@------------------------------------------------------------------------------
+        ldr r1, [r8, r1]
+        ldr.w r4, [r5, r2]
+        ldr r6, [r0, r2, lsl #3]
+        ldr r8, [r8, r2, lsl #2]
+        ldr r7, [sp, r2, lsl #1]
+        ldr r7, [sp, r2, lsl #0]
+        ldr r2, [r4, #255]!
+        ldr r8, [sp, #4]!
+        ldr lr, [sp, #-4]!
+
+@ CHECK: ldr.w r1, [r8, r1]            @ encoding: [0x58,0xf8,0x01,0x10]
+@ CHECK: ldr.w r4, [r5, r2]            @ encoding: [0x55,0xf8,0x02,0x40]
+@ CHECK: ldr.w r6, [r0, r2, lsl #3]    @ encoding: [0x50,0xf8,0x32,0x60]
+@ CHECK: ldr.w r8, [r8, r2, lsl #2]    @ encoding: [0x58,0xf8,0x22,0x80]
+@ CHECK: ldr.w r7, [sp, r2, lsl #1]    @ encoding: [0x5d,0xf8,0x12,0x70]
+@ CHECK: ldr.w r7, [sp, r2]            @ encoding: [0x5d,0xf8,0x02,0x70]
+@ CHECK: ldr   r2, [r4, #255]!         @ encoding: [0x54,0xf8,0xff,0x2f]
+@ CHECK: ldr   r8, [sp, #4]!           @ encoding: [0x5d,0xf8,0x04,0x8f]
+@ CHECK: ldr   lr, [sp, #-4]!          @ encoding: [0x5d,0xf8,0x04,0xed]
+
+
+@------------------------------------------------------------------------------
+@ LDRB(immediate)
+@------------------------------------------------------------------------------
+        ldrb r5, [r5, #-4]
+        ldrb r5, [r6, #32]
+        ldrb r5, [r6, #33]
+        ldrb r5, [r6, #257]
+        ldrb.w lr, [r7, #257]
+
+@ CHECK: ldrb  r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
+@ CHECK: ldrb.w        r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
+@ CHECK: ldrb.w        r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
+@ CHECK: ldrb.w        r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
+@ CHECK: ldrb.w        lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
+
+
+@------------------------------------------------------------------------------
+@ LDRB(register)
+@------------------------------------------------------------------------------
+        ldrb r1, [r8, r1]
+        ldrb.w r4, [r5, r2]
+        ldrb r6, [r0, r2, lsl #3]
+        ldrb r8, [r8, r2, lsl #2]
+        ldrb r7, [sp, r2, lsl #1]
+        ldrb r7, [sp, r2, lsl #0]
+
+@ CHECK: ldrb.w        r1, [r8, r1]            @ encoding: [0x18,0xf8,0x01,0x10]
+@ CHECK: ldrb.w        r4, [r5, r2]            @ encoding: [0x15,0xf8,0x02,0x40]
+@ CHECK: ldrb.w        r6, [r0, r2, lsl #3]    @ encoding: [0x10,0xf8,0x32,0x60]
+@ CHECK: ldrb.w        r8, [r8, r2, lsl #2]    @ encoding: [0x18,0xf8,0x22,0x80]
+@ CHECK: ldrb.w        r7, [sp, r2, lsl #1]    @ encoding: [0x1d,0xf8,0x12,0x70]
+@ CHECK: ldrb.w        r7, [sp, r2]            @ encoding: [0x1d,0xf8,0x02,0x70]
+
+
+@------------------------------------------------------------------------------
+@ LDRBT
+@------------------------------------------------------------------------------
+        ldrbt r1, [r2]
+        ldrbt r1, [r8, #0]
+        ldrbt r1, [r8, #3]
+        ldrbt r1, [r8, #255]
+
+@ CHECK: ldrbt r1, [r2]                @ encoding: [0x12,0xf8,0x00,0x1e]
+@ CHECK: ldrbt r1, [r8]                @ encoding: [0x18,0xf8,0x00,0x1e]
+@ CHECK: ldrbt r1, [r8, #3]            @ encoding: [0x18,0xf8,0x03,0x1e]
+@ CHECK: ldrbt r1, [r8, #255]          @ encoding: [0x18,0xf8,0xff,0x1e]
+
+
 @------------------------------------------------------------------------------
 @ IT
 @------------------------------------------------------------------------------