Thumb2 assembly parsing and encoding for PLD.
[oota-llvm.git] / test / MC / ARM / basic-thumb2-instructions.s
index cca547d673b25b63f3cc221ed8cd3ad7d014c967..166db88a8ade0cabaea089797a32618c0e629357 100644 (file)
@@ -1013,6 +1013,7 @@ _func:
         movseq r1, #12
         moveq r1, #12
         movne.w r1, #12
+        mov.w r6, #450
 
 @ CHECK: movs  r1, #21                 @ encoding: [0x15,0x21]
 @ CHECK: movs.w        r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
@@ -1027,6 +1028,7 @@ _func:
 @ CHECK: movseq.w      r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
 @ CHECK: moveq r1, #12                 @ encoding: [0x0c,0x21]
 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
+@ CHECK: mov.w r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
 
 
 @------------------------------------------------------------------------------
@@ -1123,6 +1125,164 @@ _func:
 @ CHECK: it    eq                      @ encoding: [0x08,0xbf]
 @ CHECK: muleq r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
 
+
+@------------------------------------------------------------------------------
+@ MVN(immediate)
+@------------------------------------------------------------------------------
+        mvns r8, #21
+        mvn r0, #0x3fc0000
+        mvns r0, #0x3fc0000
+        itte eq
+        mvnseq r1, #12
+        mvneq r1, #12
+        mvnne r1, #12
+
+@ CHECK: mvns  r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
+@ CHECK: mvn   r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
+@ CHECK: mvns  r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
+@ CHECK: itte  eq                      @ encoding: [0x06,0xbf]
+@ CHECK: mvnseq        r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
+@ CHECK: mvneq r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
+@ CHECK: mvnne r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
+
+
+@------------------------------------------------------------------------------
+@ MVN(register)
+@------------------------------------------------------------------------------
+        mvn r2, r3
+        mvns r2, r3
+        mvn r5, r6, lsl #19
+        mvn r5, r6, lsr #9
+        mvn r5, r6, asr #4
+        mvn r5, r6, ror #6
+        mvn r5, r6, rrx
+        it eq
+        mvneq r2, r3
+
+@ CHECK: mvn.w r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
+@ CHECK: mvns  r2, r3                  @ encoding: [0xda,0x43]
+@ CHECK: mvn.w r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
+@ CHECK: mvn.w r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
+@ CHECK: mvn.w r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
+@ CHECK: mvn.w r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
+@ CHECK: mvn.w r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
+@ CHECK: it    eq                      @ encoding: [0x08,0xbf]
+@ CHECK: mvneq r2, r3                  @ encoding: [0xda,0x43]
+
+@------------------------------------------------------------------------------
+@ NOP
+@------------------------------------------------------------------------------
+        nop.w
+
+@ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
+
+
+@------------------------------------------------------------------------------
+@ ORN
+@------------------------------------------------------------------------------
+        orn r4, r5, #0xf000
+        orn r4, r5, r6
+        orns r4, r5, r6
+        orn r4, r5, r6, lsl #5
+        orns r4, r5, r6, lsr #5
+        orn r4, r5, r6, lsr #5
+        orns r4, r5, r6, asr #5
+        orn r4, r5, r6, ror #5
+
+@ CHECK: orn   r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
+@ CHECK: orn   r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
+@ CHECK: orns  r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
+@ CHECK: orn   r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
+@ CHECK: orns  r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
+@ CHECK: orn   r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
+@ CHECK: orns  r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
+@ CHECK: orn   r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
+
+
+@------------------------------------------------------------------------------
+@ ORR
+@------------------------------------------------------------------------------
+        orr r4, r5, #0xf000
+        orr r4, r5, r6
+        orr r4, r5, r6, lsl #5
+        orrs r4, r5, r6, lsr #5
+        orr r4, r5, r6, lsr #5
+        orrs r4, r5, r6, asr #5
+        orr r4, r5, r6, ror #5
+
+@ CHECK: orr   r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
+@ CHECK: orr.w r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
+@ CHECK: orr.w r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
+@ CHECK: orrs.w        r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
+@ CHECK: orr.w r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
+@ CHECK: orrs.w        r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
+@ CHECK: orr.w r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
+
+
+@------------------------------------------------------------------------------
+@ PKH
+@------------------------------------------------------------------------------
+        pkhbt r2, r2, r3
+        pkhbt r2, r2, r3, lsl #31
+        pkhbt r2, r2, r3, lsl #0
+        pkhbt r2, r2, r3, lsl #15
+
+        pkhtb r2, r2, r3
+        pkhtb r2, r2, r3, asr #31
+        pkhtb r2, r2, r3, asr #15
+
+@ CHECK: pkhbt r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
+@ CHECK: pkhbt r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
+@ CHECK: pkhbt r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
+@ CHECK: pkhbt r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
+
+@ CHECK: pkhbt r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
+@ CHECK: pkhtb r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
+@ CHECK: pkhtb r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
+
+
+@------------------------------------------------------------------------------
+@ PLD(immediate)
+@------------------------------------------------------------------------------
+        pld [r5, #-4]
+        pld [r6, #32]
+        pld [r6, #33]
+        pld [r6, #257]
+        pld [r7, #257]
+
+@ CHECK: pld   [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
+@ CHECK: pld   [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
+@ CHECK: pld   [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
+@ CHECK: pld   [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
+@ CHECK: pld   [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
+
+
+@------------------------------------------------------------------------------
+@ PLD(literal)
+@------------------------------------------------------------------------------
+        pld  _foo
+
+@ CHECK: pld   _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
+            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
+
+
+@------------------------------------------------------------------------------
+@ PLD(register)
+@------------------------------------------------------------------------------
+        pld [r8, r1]
+        pld [r5, r2]
+        pld [r0, r2, lsl #3]
+        pld [r8, r2, lsl #2]
+        pld [sp, r2, lsl #1]
+        pld [sp, r2, lsl #0]
+
+@ CHECK: pld   [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
+@ CHECK: pld   [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
+@ CHECK: pld   [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
+@ CHECK: pld   [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
+@ CHECK: pld   [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
+@ CHECK: pld   [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
+
 @------------------------------------------------------------------------------
 @ IT
 @------------------------------------------------------------------------------