basic-arm-instructions.s revision 7ed6d22e9637c52b3511ac6907830251d1124e60
13f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen@ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s
23345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  .syntax unified
33345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  .globl _func
43345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
53345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ Check that the assembler can handle the documented syntax from the ARM ARM.
63345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ For complex constructs like shifter operands, check more thoroughly for them
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ once then spot check that following instructions accept the form generally.
83345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ This gives us good coverage while keeping the overall size of the test
93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ more reasonable.
103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick_func:
123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: _func
133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@------------------------------------------------------------------------------
153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ ADC (immediate)
163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@------------------------------------------------------------------------------
173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf
183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf0
193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf00
203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf000
213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf0000
223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf00000
233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf000000
243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf0000000
253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r1, r2, #0xf000000f
263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adcs r1, r2, #0xf00
273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adcseq r1, r2, #0xf00
283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adceq r1, r2, #0xf00
293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r1, r2, #15             @ encoding: [0x0f,0x10,0xa2,0xe2]
313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r1, r2, #240            @ encoding: [0xf0,0x10,0xa2,0xe2]
323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r1, r2, #3840           @ encoding: [0x0f,0x1c,0xa2,0xe2]
333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r1, r2, #61440          @ encoding: [0x0f,0x1a,0xa2,0xe2]
343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r1, r2, #983040         @ encoding: [0x0f,0x18,0xa2,0xe2]
353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r1, r2, #15728640       @ encoding: [0x0f,0x16,0xa2,0xe2]
363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r1, r2, #251658240      @ encoding: [0x0f,0x14,0xa2,0xe2]
373f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen@ CHECK: adc	r1, r2, #4026531840     @ encoding: [0x0f,0x12,0xa2,0xe2]
3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen@ CHECK: adc	r1, r2, #4026531855     @ encoding: [0xff,0x12,0xa2,0xe2]
3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adcs	r1, r2, #3840           @ encoding: [0x0f,0x1c,0xb2,0xe2]
413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adcseq	r1, r2, #3840           @ encoding: [0x0f,0x1c,0xb2,0x02]
423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adceq	r1, r2, #3840           @ encoding: [0x0f,0x1c,0xa2,0x02]
433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@------------------------------------------------------------------------------
453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ ADC (register)
4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen@ ADC (shifted register)
473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@------------------------------------------------------------------------------
4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  adc r4, r5, r6
493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  @ Constant shifts
503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, lsl #1
513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, lsl #31
523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, lsr #1
5321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  adc r4, r5, r6, lsr #31
543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, lsr #32
553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, asr #1
5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  adc r4, r5, r6, asr #31
573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, asr #32
583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, ror #1
593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, ror #31
6021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  @ Register shifts
623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r6, r7, r8, lsl r9
633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r6, r7, r8, lsr r9
643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r6, r7, r8, asr r9
653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r6, r7, r8, ror r9
663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, r6, rrx
673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  @ Destination register is optional
693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r5, r6
703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, lsl #1
713345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, lsl #31
723345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, lsr #1
733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, lsr #31
743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, lsr #32
753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, asr #1
763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, asr #31
773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, asr #32
783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, ror #1
793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, ror #31
803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, rrx
813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r6, r7, lsl r9
823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r6, r7, lsr r9
833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r6, r7, asr r9
843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r6, r7, ror r9
853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  adc r4, r5, rrx
863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6              @ encoding: [0x06,0x40,0xa5,0xe0]
883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, lsl #1      @ encoding: [0x86,0x40,0xa5,0xe0]
903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, lsl #31     @ encoding: [0x86,0x4f,0xa5,0xe0]
913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, lsr #1      @ encoding: [0xa6,0x40,0xa5,0xe0]
923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, lsr #31     @ encoding: [0xa6,0x4f,0xa5,0xe0]
933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, lsr #32     @ encoding: [0x26,0x40,0xa5,0xe0]
9421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen@ CHECK: adc	r4, r5, r6, asr #1      @ encoding: [0xc6,0x40,0xa5,0xe0]
953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, asr #31     @ encoding: [0xc6,0x4f,0xa5,0xe0]
963345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, asr #32     @ encoding: [0x46,0x40,0xa5,0xe0]
973345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, ror #1      @ encoding: [0xe6,0x40,0xa5,0xe0]
983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, ror #31     @ encoding: [0xe6,0x4f,0xa5,0xe0]
993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xa7,0xe0]
1013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xa7,0xe0]
1023345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xa7,0xe0]
1033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xa7,0xe0]
1043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0xa5,0xe0]
1053345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r5, r5, r6              @ encoding: [0x06,0x50,0xa5,0xe0]
1073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, lsl #1      @ encoding: [0x85,0x40,0xa4,0xe0]
1083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, lsl #31     @ encoding: [0x85,0x4f,0xa4,0xe0]
1093345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, lsr #1      @ encoding: [0xa5,0x40,0xa4,0xe0]
1103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, lsr #31     @ encoding: [0xa5,0x4f,0xa4,0xe0]
1113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, lsr #32     @ encoding: [0x25,0x40,0xa4,0xe0]
1123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, asr #1      @ encoding: [0xc5,0x40,0xa4,0xe0]
1133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, asr #31     @ encoding: [0xc5,0x4f,0xa4,0xe0]
1143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, asr #32     @ encoding: [0x45,0x40,0xa4,0xe0]
1153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, ror #1      @ encoding: [0xe5,0x40,0xa4,0xe0]
1163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, ror #31     @ encoding: [0xe5,0x4f,0xa4,0xe0]
1173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0xa4,0xe0]
1183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xa6,0xe0]
1193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xa6,0xe0]
1203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xa6,0xe0]
1213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xa6,0xe0]
1223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: adc	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0xa4,0xe0]
1233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@------------------------------------------------------------------------------
1263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ FIXME: ADR
1273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@------------------------------------------------------------------------------
1283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@------------------------------------------------------------------------------
1303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ ADD
1313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@------------------------------------------------------------------------------
13221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  add r4, r5, #0xf000
1333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, r6
1343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, r6, lsl #5
1353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, r6, lsr #5
1363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, r6, lsr #5
1373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, r6, asr #5
1383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, r6, ror #5
1393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r6, r7, r8, lsl r9
1403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r6, r7, r8, lsr r9
1413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r6, r7, r8, asr r9
1423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r6, r7, r8, ror r9
1433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, r6, rrx
1443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  @ destination register is optional
1463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r5, #0xf000
1473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5
1483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, lsl #5
1493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, lsr #5
1503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, lsr #5
1513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, asr #5
1523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, ror #5
1533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r6, r7, lsl r9
1543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r6, r7, lsr r9
1553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r6, r7, asr r9
1563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r6, r7, ror r9
1573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  add r4, r5, rrx
1583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe2]
1603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe0]
1613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe0]
1623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
1633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
1643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe0]
1653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe0]
1663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe0]
1673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe0]
1683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe0]
1693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe0]
1703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe0]
1713345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1723345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe2]
1743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe0]
1753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe0]
1763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
1773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
1783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe0]
1793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe0]
1803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe0]
1813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe0]
1823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe0]
1833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe0]
1843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick@ CHECK: add	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe0]
1853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
187@------------------------------------------------------------------------------
188@ AND
189@------------------------------------------------------------------------------
190  and r10, r1, #0xf
191  and r10, r1, r6
192  and r10, r1, r6, lsl #10
193  and r10, r1, r6, lsr #10
194  and r10, r1, r6, lsr #10
195  and r10, r1, r6, asr #10
196  and r10, r1, r6, ror #10
197  and r6, r7, r8, lsl r2
198  and r6, r7, r8, lsr r2
199  and r6, r7, r8, asr r2
200  and r6, r7, r8, ror r2
201  and r10, r1, r6, rrx
202
203  @ destination register is optional
204  and r1, #0xf
205  and r10, r1
206  and r10, r1, lsl #10
207  and r10, r1, lsr #10
208  and r10, r1, lsr #10
209  and r10, r1, asr #10
210  and r10, r1, ror #10
211  and r6, r7, lsl r2
212  and r6, r7, lsr r2
213  and r6, r7, asr r2
214  and r6, r7, ror r2
215  and r10, r1, rrx
216
217@ CHECK: and	r10, r1, #15            @ encoding: [0x0f,0xa0,0x01,0xe2]
218@ CHECK: and	r10, r1, r6             @ encoding: [0x06,0xa0,0x01,0xe0]
219@ CHECK: and	r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0x01,0xe0]
220@ CHECK: and	r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
221@ CHECK: and	r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
222@ CHECK: and	r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0x01,0xe0]
223@ CHECK: and	r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0x01,0xe0]
224@ CHECK: and	r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0x07,0xe0]
225@ CHECK: and	r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0x07,0xe0]
226@ CHECK: and	r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0x07,0xe0]
227@ CHECK: and	r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0x07,0xe0]
228@ CHECK: and	r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0x01,0xe0]
229
230@ CHECK: and	r1, r1, #15             @ encoding: [0x0f,0x10,0x01,0xe2]
231@ CHECK: and	r10, r10, r1            @ encoding: [0x01,0xa0,0x0a,0xe0]
232@ CHECK: and	r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0x0a,0xe0]
233@ CHECK: and	r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
234@ CHECK: and	r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
235@ CHECK: and	r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0x0a,0xe0]
236@ CHECK: and	r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0x0a,0xe0]
237@ CHECK: and	r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0x06,0xe0]
238@ CHECK: and	r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0x06,0xe0]
239@ CHECK: and	r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0x06,0xe0]
240@ CHECK: and	r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0x06,0xe0]
241@ CHECK: and	r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0x0a,0xe0]
242
243@------------------------------------------------------------------------------
244@ FIXME: ASR
245@------------------------------------------------------------------------------
246@------------------------------------------------------------------------------
247@ FIXME: B
248@------------------------------------------------------------------------------
249@------------------------------------------------------------------------------
250@ FIXME: BFC
251@------------------------------------------------------------------------------
252@------------------------------------------------------------------------------
253@ FIXME: BFI
254@------------------------------------------------------------------------------
255