193c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7 -show-encoding < %s | FileCheck %s
293c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
393c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0]
493c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0, lsr #32]
593c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0, lsr #16]
693c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0, lsl #0]
793c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0, lsl #16]
893c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0, asr #32]
993c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0, asr #16]
1093c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0, rrx]
1193c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r0, r0, ror #16]
1293c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
1393c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0]          @ encoding: [0x00,0x00,0x90,0xe7]
1493c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0, lsr #32] @ encoding: [0x20,0x00,0x90,0xe7]
1593c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0, lsr #16] @ encoding: [0x20,0x08,0x90,0xe7]
1693c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0]          @ encoding: [0x00,0x00,0x90,0xe7]
1793c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0, lsl #16] @ encoding: [0x00,0x08,0x90,0xe7]
1893c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0, asr #32] @ encoding: [0x40,0x00,0x90,0xe7]
1993c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0, asr #16] @ encoding: [0x40,0x08,0x90,0xe7]
2093c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0, rrx]     @ encoding: [0x60,0x00,0x90,0xe7]
2193c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r0, r0, ror #16] @ encoding: [0x60,0x08,0x90,0xe7]
2293c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
2393c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0]
2493c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0, lsr #32]
2593c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0, lsr #16]
2693c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0, lsl #0]
2793c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0, lsl #16]
2893c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0, asr #32]
2993c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0, asr #16]
3093c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0, rrx]
3193c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	pld [r0, r0, ror #16]
3293c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
3393c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0]          @ encoding: [0x00,0xf0,0xd0,0xf7]
3493c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0, lsr #32] @ encoding: [0x20,0xf0,0xd0,0xf7]
3593c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0, lsr #16] @ encoding: [0x20,0xf8,0xd0,0xf7]
3693c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0]          @ encoding: [0x00,0xf0,0xd0,0xf7]
3793c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0, lsl #16] @ encoding: [0x00,0xf8,0xd0,0xf7]
3893c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0, asr #32] @ encoding: [0x40,0xf0,0xd0,0xf7]
3993c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0, asr #16] @ encoding: [0x40,0xf8,0xd0,0xf7]
4093c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0, rrx]     @ encoding: [0x60,0xf0,0xd0,0xf7]
4193c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: [r0, r0, ror #16] @ encoding: [0x60,0xf8,0xd0,0xf7]
4293c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
4393c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0]
4493c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0, lsr #32]
4593c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0, lsr #16]
4693c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0, lsl #0]
4793c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0, lsl #16]
4893c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0, asr #32]
4993c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0, asr #16]
5093c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0, rrx]
5193c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r0, [r0, r0, ror #16]
5293c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
5393c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0]          @ encoding: [0x00,0x00,0x80,0xe7]
5493c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0, lsr #32] @ encoding: [0x20,0x00,0x80,0xe7]
5593c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0, lsr #16] @ encoding: [0x20,0x08,0x80,0xe7]
5693c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0]          @ encoding: [0x00,0x00,0x80,0xe7]
5793c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0, lsl #16] @ encoding: [0x00,0x08,0x80,0xe7]
5893c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0, asr #32] @ encoding: [0x40,0x00,0x80,0xe7]
5993c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0, asr #16] @ encoding: [0x40,0x08,0x80,0xe7]
6093c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0, rrx]     @ encoding: [0x60,0x00,0x80,0xe7]
6193c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r0, [r0, r0, ror #16] @ encoding: [0x60,0x08,0x80,0xe7]
6293c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
6393c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ Uses printAddrMode2OffsetOperand(), used by LDRBT_POST_IMM LDRBT_POST_REG
6493c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ LDRB_POST_IMM LDRB_POST_REG LDRT_POST_IMM LDRT_POST_REG LDR_POST_IMM
6593c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ LDR_POST_REG STRBT_POST_IMM STRBT_POST_REG STRB_POST_IMM STRB_POST_REG
6693c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ STRT_POST_IMM STRT_POST_REG STR_POST_IMM STR_POST_REG
6793c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
6893c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r0, [r1], r2, rrx
6993c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	ldr r3, [r4], r5, ror #0
7093c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r6, [r7], r8, lsl #0
7193c7c449a1351542fa5a275587187154dbedb8e0Tim Northover	str r9, [r10], r11
7293c7c449a1351542fa5a275587187154dbedb8e0Tim Northover
7393c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r0, [r1], r2, rrx    @ encoding: [0x62,0x00,0x91,0xe6]
7493c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: ldr r3, [r4], r5         @ encoding: [0x05,0x30,0x94,0xe6]
7593c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r6, [r7], r8         @ encoding: [0x08,0x60,0x87,0xe6]
7693c7c449a1351542fa5a275587187154dbedb8e0Tim Northover@ CHECK: str r9, [r10], r11       @ encoding: [0x0b,0x90,0x8a,0xe6]
77bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover
78bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ Uses printSORegImmOperand(), used by ADCrsi ADDrsi ANDrsi BICrsi EORrsi
79bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ ORRrsi RSBrsi RSCrsi SBCrsi SUBrsi CMNzrsi CMPrsi MOVsi MVNsi TEQrsi TSTrsi
80bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover
81bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc sp, lr, pc
82bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc r1, r8, r9, lsr #32
83bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc r2, r7, pc, lsr #16
84bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc r3, r6, r10, lsl #0
85bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc r4, r5, lr, lsl #16
86bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc r5, r4, r11, asr #32
87bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc r6, r3, sp, asr #16
88bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc r7, r2, r12, rrx
89bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	adc r8, r1, r0, ror #16
90bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover
91bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc sp, lr, pc           @ encoding: [0x0f,0xd0,0xae,0xe0]
92bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc r1, r8, r9, lsr #32  @ encoding: [0x29,0x10,0xa8,0xe0]
93bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc r2, r7, pc, lsr #16  @ encoding: [0x2f,0x28,0xa7,0xe0]
94bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc r3, r6, r10          @ encoding: [0x0a,0x30,0xa6,0xe0]
95bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc r4, r5, lr, lsl #16  @ encoding: [0x0e,0x48,0xa5,0xe0]
96bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc r5, r4, r11, asr #32 @ encoding: [0x4b,0x50,0xa4,0xe0]
97bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc r6, r3, sp, asr #16  @ encoding: [0x4d,0x68,0xa3,0xe0]
98bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc r7, r2, r12, rrx     @ encoding: [0x6c,0x70,0xa2,0xe0]
99bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: adc r8, r1, r0, ror #16  @ encoding: [0x60,0x88,0xa1,0xe0]
100bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover
101bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp sp, lr
102bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp r1, r8, lsr #32
103bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp r2, r7, lsr #16
104bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp r3, r6, lsl #0
105bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp r4, r5, lsl #16
106bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp r5, r4, asr #32
107bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp r6, r3, asr #16
108bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp r7, r2, rrx
109bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover	cmp r8, r1, ror #16
110bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover
111bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp sp, lr           @ encoding: [0x0e,0x00,0x5d,0xe1]
112bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp r1, r8, lsr #32  @ encoding: [0x28,0x00,0x51,0xe1]
113bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp r2, r7, lsr #16  @ encoding: [0x27,0x08,0x52,0xe1]
114bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp r3, r6           @ encoding: [0x06,0x00,0x53,0xe1]
115bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp r4, r5, lsl #16  @ encoding: [0x05,0x08,0x54,0xe1]
116bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp r5, r4, asr #32  @ encoding: [0x44,0x00,0x55,0xe1]
117bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp r6, r3, asr #16  @ encoding: [0x43,0x08,0x56,0xe1]
118bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp r7, r2, rrx      @ encoding: [0x62,0x00,0x57,0xe1]
119bb5174246b5d0dfbd057b3641f5e134fe74ea0f4Tim Northover@ CHECK: cmp r8, r1, ror #16  @ encoding: [0x61,0x08,0x58,0xe1]
120