xref: /aosp_15_r20/external/llvm/test/MC/ARM/arm-shift-encoding.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7 -show-encoding < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0]
4*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0, lsr #32]
5*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0, lsr #16]
6*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0, lsl #0]
7*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0, lsl #16]
8*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0, asr #32]
9*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0, asr #16]
10*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0, rrx]
11*9880d681SAndroid Build Coastguard Worker	ldr r0, [r0, r0, ror #16]
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0]          @ encoding: [0x00,0x00,0x90,0xe7]
14*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0, lsr #32] @ encoding: [0x20,0x00,0x90,0xe7]
15*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0, lsr #16] @ encoding: [0x20,0x08,0x90,0xe7]
16*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0]          @ encoding: [0x00,0x00,0x90,0xe7]
17*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0, lsl #16] @ encoding: [0x00,0x08,0x90,0xe7]
18*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0, asr #32] @ encoding: [0x40,0x00,0x90,0xe7]
19*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0, asr #16] @ encoding: [0x40,0x08,0x90,0xe7]
20*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0, rrx]     @ encoding: [0x60,0x00,0x90,0xe7]
21*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r0, r0, ror #16] @ encoding: [0x60,0x08,0x90,0xe7]
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker	pld [r0, r0]
24*9880d681SAndroid Build Coastguard Worker	pld [r0, r0, lsr #32]
25*9880d681SAndroid Build Coastguard Worker	pld [r0, r0, lsr #16]
26*9880d681SAndroid Build Coastguard Worker	pld [r0, r0, lsl #0]
27*9880d681SAndroid Build Coastguard Worker	pld [r0, r0, lsl #16]
28*9880d681SAndroid Build Coastguard Worker	pld [r0, r0, asr #32]
29*9880d681SAndroid Build Coastguard Worker	pld [r0, r0, asr #16]
30*9880d681SAndroid Build Coastguard Worker	pld [r0, r0, rrx]
31*9880d681SAndroid Build Coastguard Worker	pld [r0, r0, ror #16]
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0]          @ encoding: [0x00,0xf0,0xd0,0xf7]
34*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0, lsr #32] @ encoding: [0x20,0xf0,0xd0,0xf7]
35*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0, lsr #16] @ encoding: [0x20,0xf8,0xd0,0xf7]
36*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0]          @ encoding: [0x00,0xf0,0xd0,0xf7]
37*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0, lsl #16] @ encoding: [0x00,0xf8,0xd0,0xf7]
38*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0, asr #32] @ encoding: [0x40,0xf0,0xd0,0xf7]
39*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0, asr #16] @ encoding: [0x40,0xf8,0xd0,0xf7]
40*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0, rrx]     @ encoding: [0x60,0xf0,0xd0,0xf7]
41*9880d681SAndroid Build Coastguard Worker@ CHECK: [r0, r0, ror #16] @ encoding: [0x60,0xf8,0xd0,0xf7]
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0]
44*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0, lsr #32]
45*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0, lsr #16]
46*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0, lsl #0]
47*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0, lsl #16]
48*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0, asr #32]
49*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0, asr #16]
50*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0, rrx]
51*9880d681SAndroid Build Coastguard Worker	str r0, [r0, r0, ror #16]
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0]          @ encoding: [0x00,0x00,0x80,0xe7]
54*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0, lsr #32] @ encoding: [0x20,0x00,0x80,0xe7]
55*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0, lsr #16] @ encoding: [0x20,0x08,0x80,0xe7]
56*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0]          @ encoding: [0x00,0x00,0x80,0xe7]
57*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0, lsl #16] @ encoding: [0x00,0x08,0x80,0xe7]
58*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0, asr #32] @ encoding: [0x40,0x00,0x80,0xe7]
59*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0, asr #16] @ encoding: [0x40,0x08,0x80,0xe7]
60*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0, rrx]     @ encoding: [0x60,0x00,0x80,0xe7]
61*9880d681SAndroid Build Coastguard Worker@ CHECK: str r0, [r0, r0, ror #16] @ encoding: [0x60,0x08,0x80,0xe7]
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker@ Uses printAddrMode2OffsetOperand(), used by LDRBT_POST_IMM LDRBT_POST_REG
64*9880d681SAndroid Build Coastguard Worker@ LDRB_POST_IMM LDRB_POST_REG LDRT_POST_IMM LDRT_POST_REG LDR_POST_IMM
65*9880d681SAndroid Build Coastguard Worker@ LDR_POST_REG STRBT_POST_IMM STRBT_POST_REG STRB_POST_IMM STRB_POST_REG
66*9880d681SAndroid Build Coastguard Worker@ STRT_POST_IMM STRT_POST_REG STR_POST_IMM STR_POST_REG
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker	ldr r0, [r1], r2, rrx
69*9880d681SAndroid Build Coastguard Worker	ldr r3, [r4], r5, ror #0
70*9880d681SAndroid Build Coastguard Worker	str r6, [r7], r8, lsl #0
71*9880d681SAndroid Build Coastguard Worker	str r9, [r10], r11
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r0, [r1], r2, rrx    @ encoding: [0x62,0x00,0x91,0xe6]
74*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r3, [r4], r5         @ encoding: [0x05,0x30,0x94,0xe6]
75*9880d681SAndroid Build Coastguard Worker@ CHECK: str r6, [r7], r8         @ encoding: [0x08,0x60,0x87,0xe6]
76*9880d681SAndroid Build Coastguard Worker@ CHECK: str r9, [r10], r11       @ encoding: [0x0b,0x90,0x8a,0xe6]
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker@ Uses printSORegImmOperand(), used by ADCrsi ADDrsi ANDrsi BICrsi EORrsi
79*9880d681SAndroid Build Coastguard Worker@ ORRrsi RSBrsi RSCrsi SBCrsi SUBrsi CMNzrsi CMPrsi MOVsi MVNsi TEQrsi TSTrsi
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Worker	adc sp, lr, pc
82*9880d681SAndroid Build Coastguard Worker	adc r1, r8, r9, lsr #32
83*9880d681SAndroid Build Coastguard Worker	adc r2, r7, pc, lsr #16
84*9880d681SAndroid Build Coastguard Worker	adc r3, r6, r10, lsl #0
85*9880d681SAndroid Build Coastguard Worker	adc r4, r5, lr, lsl #16
86*9880d681SAndroid Build Coastguard Worker	adc r5, r4, r11, asr #32
87*9880d681SAndroid Build Coastguard Worker	adc r6, r3, sp, asr #16
88*9880d681SAndroid Build Coastguard Worker	adc r7, r2, r12, rrx
89*9880d681SAndroid Build Coastguard Worker	adc r8, r1, r0, ror #16
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker@ CHECK: adc sp, lr, pc           @ encoding: [0x0f,0xd0,0xae,0xe0]
92*9880d681SAndroid Build Coastguard Worker@ CHECK: adc r1, r8, r9, lsr #32  @ encoding: [0x29,0x10,0xa8,0xe0]
93*9880d681SAndroid Build Coastguard Worker@ CHECK: adc r2, r7, pc, lsr #16  @ encoding: [0x2f,0x28,0xa7,0xe0]
94*9880d681SAndroid Build Coastguard Worker@ CHECK: adc r3, r6, r10          @ encoding: [0x0a,0x30,0xa6,0xe0]
95*9880d681SAndroid Build Coastguard Worker@ CHECK: adc r4, r5, lr, lsl #16  @ encoding: [0x0e,0x48,0xa5,0xe0]
96*9880d681SAndroid Build Coastguard Worker@ CHECK: adc r5, r4, r11, asr #32 @ encoding: [0x4b,0x50,0xa4,0xe0]
97*9880d681SAndroid Build Coastguard Worker@ CHECK: adc r6, r3, sp, asr #16  @ encoding: [0x4d,0x68,0xa3,0xe0]
98*9880d681SAndroid Build Coastguard Worker@ CHECK: adc r7, r2, r12, rrx     @ encoding: [0x6c,0x70,0xa2,0xe0]
99*9880d681SAndroid Build Coastguard Worker@ CHECK: adc r8, r1, r0, ror #16  @ encoding: [0x60,0x88,0xa1,0xe0]
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Worker	cmp sp, lr
102*9880d681SAndroid Build Coastguard Worker	cmp r1, r8, lsr #32
103*9880d681SAndroid Build Coastguard Worker	cmp r2, r7, lsr #16
104*9880d681SAndroid Build Coastguard Worker	cmp r3, r6, lsl #0
105*9880d681SAndroid Build Coastguard Worker	cmp r4, r5, lsl #16
106*9880d681SAndroid Build Coastguard Worker	cmp r5, r4, asr #32
107*9880d681SAndroid Build Coastguard Worker	cmp r6, r3, asr #16
108*9880d681SAndroid Build Coastguard Worker	cmp r7, r2, rrx
109*9880d681SAndroid Build Coastguard Worker	cmp r8, r1, ror #16
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp sp, lr           @ encoding: [0x0e,0x00,0x5d,0xe1]
112*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r1, r8, lsr #32  @ encoding: [0x28,0x00,0x51,0xe1]
113*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r2, r7, lsr #16  @ encoding: [0x27,0x08,0x52,0xe1]
114*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r3, r6           @ encoding: [0x06,0x00,0x53,0xe1]
115*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r4, r5, lsl #16  @ encoding: [0x05,0x08,0x54,0xe1]
116*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r5, r4, asr #32  @ encoding: [0x44,0x00,0x55,0xe1]
117*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r6, r3, asr #16  @ encoding: [0x43,0x08,0x56,0xe1]
118*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r7, r2, rrx      @ encoding: [0x62,0x00,0x57,0xe1]
119*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r8, r1, ror #16  @ encoding: [0x61,0x08,0x58,0xe1]
120